#Datos sobre pobreza en los municipios de Mexico: Indice de rezago educativo, pobreza, indice de carencia en acceso a servios de salud
#y indice de carencia en alimentos
# data table
import pandas as pd
import os

datamuni=pd.read_excel(os.path.join('data','indicadores de pobreza municipal, 2015 (3).xlsx'),
                     dtype={'Ubigeo'object})
datamuni.head()
datamuni.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2457 entries, 0 to 2456
Data columns (total 8 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Ubigeo 2457 non-null object
1 Entidad_Federativa 2457 non-null object
2 Municipio 2457 non-null object
3 Poblacion 2457 non-null int64
4 Pobreza 2457 non-null float64
5 IC_Reza_Educ 2457 non-null float64
6 IC_Care_en_Acce_Servi_Salud 2457 non-null float64
7 IC_Care_en_Ali 2457 non-null float64
dtypes: float64(4), int64(1), object(3)
memory usage: 153.7+ KB
#Leemos el mapa que contiene los municipios de Mexico
import os, geopandas as gpd

MunicipiosMex=gpd.read_file(os.path.join("maps","mapa_mexico","Division_Municipal_Mexico_2010.shp"))
MunicipiosMex
                            
#Ejercicio 1
#ALTERNATIVA A
#Consigue un mapa de las Provincias del Perú.
#Obtenga una tabla de variables sobre las provincias de Perú. Al menos 3 variables numéricas.
#Preprocese ambas tablas y prepárelas para la fusión.
#Realice la fusión, haciendo los cambios necesarios para mantener la mayor cantidad de columnas.
#ALTERNATIVA B
#Usa el mapa de los Distritos del Perú de esta clase.
#Obtenga una nueva tabla de variables sobre los distritos de Perú. Al menos 3 variables numéricas.
#Preprocese ambas tablas y prepárelas para la fusión.
#Realice la fusión, haciendo los cambios necesarios para mantener la mayor cantidad de columnas.
#Seleccione los distritos de UN Departamento para los demás ejercicios. No seleccione Pasco,Tacna,Moquegua, Ucayali, Tumbes, Madre de Dios, Callao.
#ALTERNATIVA C
#Haz la alternativa A con un país diferente.
#Convertimos todo a mayuscula y eliminamos los espacios en blanco
capitalizeColumns=lambda x: x.str.upper().str.strip()
datamuni[['Entidad_Federativa','Municipio']]=datamuni[['Entidad_Federativa','Municipio']].apply(capitalizeColumns)
MunicipiosMex[['NOM_MUN','NOMEDO']]=MunicipiosMex[['NOM_MUN','NOMEDO']].apply(capitalizeColumns)
datamuni
MunicipiosMex
#Después de observar ambas tablas, sería mejor si las columnas con nombres tuvieran las mismas mayúsculas y sin espacios en blanco adicionales:
import unidecode


byePunctuation=lambda x: unidecode.unidecode(x)
datamuni[['Entidad_Federativa','Municipio']]=datamuni[['Entidad_Federativa','Municipio']].applymap(byePunctuation)
MunicipiosMex[['NOM_MUN','NOMEDO']]=MunicipiosMex[['NOM_MUN','NOMEDO']].applymap(byePunctuation)
#Calcular la cantidad de filas y de columnas 
len(datamuni.Municipio),len(MunicipiosMex.NOM_MUN)
(2457, 2480)
#Verificamos si hay repetidos
datamuni.Municipio.duplicated().sum(),MunicipiosMex.NOM_MUN.duplicated().sum()
(140, 175)
# Haremos una nueva data sin repetidos, es decir una concatenacion.
datamuni['estaMuni']=["+".join(pd) for pd in zip (datamuni.Entidad_Federativa,datamuni.Municipio)]
MunicipiosMex['estaMuni']=["+".join(pd) for pd in zip (MunicipiosMex.NOMEDO,MunicipiosMex.NOM_MUN)]
#La nueva columna se ve así:
datamuni['estaMuni'].head()
# Limpieza adicional a la data, quitamos guiones
datamuni.estaMuni=datamuni.estaMuni.str.replace("\-|\_|\s+"," ",regex=True)
MunicipiosMex.estaMuni=MunicipiosMex.estaMuni.str.replace("\-|\_|\s+"," ",regex=True)
#Fusión
#Necesitamos fusionar ambas tablas ahora. Eso puede suceder efectivamente si ambas tablas tienen una columna clave : una columna (o colección de ellas) cuyos valores en una tabla son los mismos en la otra.
#No es necesario que la coincidencia sea exacta, sino que solo se fusionan los valores comunes de la clave .
#Averigüemos qué NO coincide en cada tabla:
#Quiero ver todods los distrtos que estan en el mapa que no estan en geodataframe
nomatch_df=set(datamuni.estaMuni)- set(MunicipiosMex.estaMuni)
#Quiero ver todods los distrtos que estan en el geodataframe que no estan en el mapa
nomatch_gdf=set(MunicipiosMex.estaMuni)-set(datamuni.estaMuni) 
#Esto es lo que no se pudo igualar:
len(nomatch_df), len(nomatch_gdf)
(273, 257)
# elija la coincidencia más cercana de nomatch_gdf para un valor en nomatch_df 
from thefuzz import process
[(dis,process.extractOne(dis,nomatch_gdf)) for dis in sorted(nomatch_df)]
[('AGUASCALIENTES+TEPEZALA', ('AGUASCALIENTES+TEPEZAL', 98)),
('BAJA CALIFORNIA SUR+COMO0U', ('BAJA CALIFORNIA SUR+COMONDU', 94)),
('CAMPECHE+CA0ELARIA', ('CAMPECHE+CANDELARIA', 92)),
('CAMPECHE+HOPELCHEN', ('CAMPECHE+HOPELCHAN', 94)),
('CHIAPAS+CATAZAJA', ('CHIAPAS+CATAZAJ', 97)),
('CHIAPAS+COPAINALA', ('CHIAPAS+COPAINAL', 97)),
('CHIAPAS+LA GRA0EZA', ('CHIAPAS+LA GRANDEZA', 92)),
('CHIAPAS+LA I0EPE0ENCIA', ('CHIAPAS+LA INDEPENDENCIA', 87)),
('CHIAPAS+SAN A0RES DURAZNAL', ('CHIAPAS+SAN ANDRES DURAZNAL', 94)),
('CHIAPAS+SAN CRISTOBAL DE LAS CASAS',
('CHIAPAS+SAN CRISTABAL DE LAS CASAS', 97)),
('CHIAPAS+SAN FERNA0O', ('CHIAPAS+SAN FERNANDO', 92)),
('CHIAPAS+SITALA', ('CHIAPAS+SITAL', 96)),
('CHIAPAS+TONALA', ('CHIAPAS+TONAL', 96)),
('CHIAPAS+TUMBALA', ('CHIAPAS+TUMBAL', 97)),
('CHIHUAHUA+ALLE0E', ('CHIHUAHUA+ALLENDE', 91)),
('CHIHUAHUA+CASAS GRA0ES', ('CHIHUAHUA+CASAS GRANDES', 93)),
('CHIHUAHUA+NUEVO CASAS GRA0ES', ('CHIHUAHUA+NUEVO CASAS GRANDES', 95)),
('CHIHUAHUA+TEMOSACHIC', ('CHIHUAHUA+TEMOSACHI', 97)),
('COAHUILA+ALLE0E', ('COAHUILA+ALLENDE', 90)),
('COAHUILA+CA0ELA', ('COAHUILA+CANDELA', 90)),
('COAHUILA+CUATRO CIENEGAS', ('COAHUILA+CUATROCIENEGAS', 98)),
('DISTRITO FEDERAL+ALVARO OBREGON', ('D.F.+ALVARO OBREGON', 86)),
('DISTRITO FEDERAL+AZCAPOTZALCO', ('D.F.+AZCAPOTZALCO', 86)),
('DISTRITO FEDERAL+BENITO JUAREZ', ('D.F.+BENITO JUAREZ', 86)),
('DISTRITO FEDERAL+COYOACAN', ('D.F.+COYOACAN', 86)),
('DISTRITO FEDERAL+CUAJIMALPA DE MORELOS', ('NAYARIT+BAHIA DE BANDERAS', 86)),
('DISTRITO FEDERAL+CUAUHTEMOC', ('D.F.+CUAUHTEMOC', 86)),
('DISTRITO FEDERAL+GUSTAVO A. MADERO', ('D.F.+GUSTAVO A. MADERO', 86)),
('DISTRITO FEDERAL+IZTACALCO', ('D.F.+IZTACALCO', 86)),
('DISTRITO FEDERAL+IZTAPALAPA', ('D.F.+IZTAPALAPA', 86)),
('DISTRITO FEDERAL+LA MAGDALENA CONTRERAS',
('D.F.+LA MAGDALENA CONTRERAS', 87)),
('DISTRITO FEDERAL+MIGUEL HIDALGO', ('HIDALGO+ZIMAP N', 86)),
('DISTRITO FEDERAL+MILPA ALTA', ('D.F.+MILPA ALTA', 86)),
('DISTRITO FEDERAL+TLAHUAC', ('D.F.+TLAHUAC', 86)),
('DISTRITO FEDERAL+TLALPAN', ('D.F.+TLALPAN', 86)),
('DISTRITO FEDERAL+VENUSTIANO CARRANZA', ('D.F.+VENUSTIANO CARRANZA', 86)),
('DISTRITO FEDERAL+XOCHIMILCO', ('D.F.+XOCHIMILCO', 86)),
('DURANGO+I0E', ('DURANGO+INDE', 87)),
('GUANAJUATO+APASEO EL GRA0E', ('GUANAJUATO+APASEO EL GRANDE', 94)),
('GUANAJUATO+DOLORES HIDALGO CUNA DE LA I0EPE0ENCIA NACIONAL',
('GUANAJUATO+DOLORES HIDALGO', 90)),
('GUANAJUATO+SAN MIGUEL DE ALLE0E', ('OAXACA+SAN JUAN TABA', 86)),
('GUANAJUATO+SANTA CRUZ DE JUVENTINO ROSAS',
('GUANAJUATO+SANTA CRUZ DE JUVENTINO ROSA', 99)),
('GUANAJUATO+TARA0ACUAO', ('GUANAJUATO+TARANDACUAO', 93)),
('GUERRERO+COAHUAYUTLA DE JOSE MARIA IZAZAGA',
('GUERRERO+COAHUAYUTLA DE JOSE MARIA', 95)),
('GUERRERO+COCHOAPA EL GRA0E', ('GUERRERO+OLINAL', 86)),
('GUERRERO+IGUALA DE LA I0EPE0ENCIA',
('GUERRERO+IGUALA DE LA INDEPENDENCIA', 91)),
('GUERRERO+ILIATENCO', ('GUERRERO+LA UNION DE ISIDORO MONTES D', 86)),
('GUERRERO+JOSE JOAQUIN DE HERRERA', ('GUERRERO+OLINAL', 86)),
('GUERRERO+JUCHITAN', ('GUERRERO+LA UNION DE ISIDORO MONTES D', 86)),
('GUERRERO+LA UNION DE ISIDORO MONTES DE OCA',
('GUERRERO+LA UNION DE ISIDORO MONTES D', 94)),
('GUERRERO+MARQUELIA', ('GUERRERO+LA UNION DE ISIDORO MONTES D', 86)),
('GUERRERO+OLINALA', ('GUERRERO+OLINAL', 97)),
('GUERRERO+ZIHUATANEJO DE AZUETA', ('GUERRERO+OLINAL', 86)),
('GUERRERO+ZIRA0ARO', ('GUERRERO+ZIRANDARO', 91)),
('HIDALGO+ATOTONILCO EL GRA0E', ('HIDALGO+ATOTONILCO EL GRANDE', 95)),
('HIDALGO+SANTIAGO TULANTEPEC DE LUGO GUERRERO',
('HIDALGO+SANTIAGO TULANTEPEC DE LUGO', 95)),
('HIDALGO+TULA DE ALLE0E', ('HIDALGO+TULA DE ALLENDE', 93)),
('HIDALGO+ZACUALTIPAN DE ANGELES', ('HIDALGO+ZACUALTIP N DE ANGELES', 97)),
('HIDALGO+ZIMAPAN', ('HIDALGO+ZIMAP N', 93)),
('JALISCO+ARA0AS', ('JALISCO+ARANDAS', 90)),
('JALISCO+CUAUTITLAN DE GARCIA BARRAGAN',
('JALISCO+CUAUTITLAN DE GARCIA BARRAG', 97)),
('JALISCO+CUQUIO', ('JALISCO+CUQU!O', 93)),
('JALISCO+IXTLAHUACAN DE LOS MEMBRILLOS',
('JALISCO+IXTLAHUACAN DE LOS MEMBRILLO', 99)),
('JALISCO+SAN DIEGO DE ALEJA0RIA', ('JALISCO+SAN DIEGO DE ALEJANDRIA', 95)),
('JALISCO+SAN IGNACIO CERRO GORDO', ('JALISCO+ARANDAS', 86)),
('JALISCO+SAN MARTIN HIDALGO', ('JALISCO+SAN MARTIN DE HIDALGO', 95)),
('JALISCO+TALPA DE ALLE0E', ('JALISCO+TALPA DE ALLENDE', 94)),
('JALISCO+TONALA', ('JALISCO+TONAL', 96)),
('JALISCO+ZAPOTLAN EL GRA0E', ('JALISCO+ZAPOTLAN EL GRANDE', 94)),
('MEXICO+LUVIANOS', ('MEXICO+VILLA DE ALLENDE', 86)),
('MEXICO+SAN JOSE DEL RINCON', ('MEXICO+TEC MAC', 86)),
('MEXICO+TECAMAC', ('MEXICO+TEC MAC', 93)),
('MEXICO+TONANITLA', ('JALISCO+TONAL', 62)),
('MEXICO+VILLA DE ALLE0E', ('MEXICO+VILLA DE ALLENDE', 93)),
('MICHOACAN+ALVARO OBREGON', ('MICHOACAN+AVARO OBREGON', 98)),
('MICHOACAN+CHAVI0A', ('MICHOACAN+CHAVINDA', 91)),
('MICHOACAN+CHUCA0IRO', ('MICHOACAN+CHUCANDIRO', 92)),
('MICHOACAN+COALCOMAN DE VAZQUEZ PALLARES',
('MICHOACAN+COALCOMAN DE VAZQUEZ PALLARE', 99)),
('MICHOACAN+COPA0ARO', ('MICHOACAN+COPANDARO', 92)),
('MICHOACAN+ECUA0UREO', ('MICHOACAN+ECUANDUREO', 92)),
('MICHOACAN+HUA0ACAREO', ('MICHOACAN+HUANDACAREO', 93)),
('MICHOACAN+I0APARAPEO', ('MICHOACAN+INDAPARAPEO', 93)),
('MICHOACAN+JIMENEZ', ('MICHOACAN+JIMINEZ', 94)),
('MICHOACAN+PANI0ICUARO', ('MICHOACAN+PANINDICUARO', 93)),
('MICHOACAN+PURUA0IRO', ('MICHOACAN+PURUANDIRO', 92)),
('MICHOACAN+QUERE0ARO', ('MICHOACAN+QUERENDARO', 92)),
('MICHOACAN+TANGAMA0APIO', ('MICHOACAN+TANGAMANDAPIO', 93)),
('MICHOACAN+TINGUI0IN', ('MICHOACAN+TINGUINDIN', 92)),
('MORELOS+ZACATEPEC', ('MORELOS+ZACATEPEC DE HIDALGO', 90)),
('MORELOS+ZACUALPAN', ('MORELOS+ZACUALPAN DE AMILPAS', 90)),
('NAYARIT+BAHIA DE BA0ERAS', ('NAYARIT+BAHIA DE BANDERAS', 94)),
('NUEVO LEON+ALLE0E', ('NUEVO LEON+ALLENDE', 91)),
('NUEVO LEON+DR. ARROYO', ('NUEVO LEON+DOCTOR ARROYO', 89)),
('NUEVO LEON+DR. COSS', ('NUEVO LEON+DOCTOR COSS', 88)),
('NUEVO LEON+DR. GONZALEZ', ('NUEVO LEON+DOCTOR GONZALEZ', 90)),
('NUEVO LEON+GRAL. BRAVO', ('NUEVO LEON+GENERAL BRAVO', 91)),
('NUEVO LEON+GRAL. ESCOBEDO', ('NUEVO LEON+GENERAL ESCOBEDO', 92)),
('NUEVO LEON+GRAL. TERAN', ('NUEVO LEON+GENERAL TERAN', 91)),
('NUEVO LEON+GRAL. TREVINO', ('NUEVO LEON+GENERAL TREVINO', 92)),
('NUEVO LEON+GRAL. ZARAGOZA', ('NUEVO LEON+GENERAL ZARAGOZA', 92)),
('NUEVO LEON+GRAL. ZUAZUA', ('NUEVO LEON+GENERAL ZUAZUA', 92)),
('OAXACA+CA0ELARIA LOXICHA', ('OAXACA+CANDELARIA LOXICHA', 94)),
('OAXACA+CALIHUALA', ('OAXACA+CALIHUAL', 97)),
('OAXACA+CAPULALPAM DE ME0EZ', ('OAXACA+CAPULALPAM DE MENDEZ', 94)),
('OAXACA+CHAHUITES', ('OAXACA+CHAUITES', 97)),
('OAXACA+CHIQUIHUITLAN DE BENITO JUAREZ',
('OAXACA+CHIQUIHUITL N DE BENITO JUAR', 94)),
('OAXACA+CUYAMECALCO VILLA DE ZARAGOZA',
('OAXACA+CUYAMECALCO VILLA DE ZARAGOZ', 99)),
('OAXACA+HEROICA CIUDAD DE EJUTLA DE CRESPO',
('OAXACA+SAN ANDRES LAGUNAS', 86)),
('OAXACA+HEROICA CIUDAD DE HUAJUAPAN DE LEON',
('OAXACA+HEROICA CIUDAD DE HUAJUAPAN', 95)),
('OAXACA+HEROICA CIUDAD DE JUCHITAN DE ZARAGOZA',
('OAXACA+SAN ANDRES LAGUNAS', 86)),
('OAXACA+MAGDALENA YODOCONO DE PORFIRIO DIAZ',
('OAXACA+MAGDALENA YODOCONO DE PORFIR', 91)),
('OAXACA+MARTIRES DE TACUBAYA', ('OAXACA+M RTIRES DE TACUBAYA', 96)),
('OAXACA+MATIAS ROMERO AVE0ANO', ('OAXACA+MATIAS ROMERO', 95)),
('OAXACA+MIAHUATLAN DE PORFIRIO DIAZ',
('OAXACA+MIAHUATLAN DE PORFIRIO D!AZ', 97)),
('OAXACA+MIXISTLAN DE LA REFORMA', ('OAXACA+MIXISTL N DE LA REFORMA', 97)),
('OAXACA+SAN A0RES CABECERA NUEVA', ('OAXACA+SAN ANDRES CABECERA NUEVA', 95)),
('OAXACA+SAN A0RES DINICUITI', ('OAXACA+SAN ANDRES DINICUITI', 94)),
('OAXACA+SAN A0RES HUAXPALTEPEC', ('OAXACA+SAN ANDRES HUAXPALTEPEC', 95)),
('OAXACA+SAN A0RES HUAYAPAM', ('OAXACA+SAN ANDRES HUAY PAM', 90)),
('OAXACA+SAN A0RES IXTLAHUACA', ('OAXACA+SAN ANDRES IXTLAHUACA', 95)),
('OAXACA+SAN A0RES LAGUNAS', ('OAXACA+SAN ANDRES LAGUNAS', 94)),
('OAXACA+SAN A0RES NUXINO', ('OAXACA+SAN ANDRES NUXINO', 94)),
('OAXACA+SAN A0RES PAXTLAN', ('OAXACA+SAN ANDRES PAXTLAN', 94)),
('OAXACA+SAN A0RES SINAXTLA', ('OAXACA+SAN ANDRES SINAXTLA', 94)),
('OAXACA+SAN A0RES SOLAGA', ('OAXACA+SAN ANDRES SOLAGA', 94)),
('OAXACA+SAN A0RES TEOTILALPAM', ('OAXACA+SAN ANDRES TEOTILALPAM', 95)),
('OAXACA+SAN A0RES TEPETLAPA', ('OAXACA+SAN ANDRES TEPETLAPA', 94)),
('OAXACA+SAN A0RES YAA', ('OAXACA+SAN ANDRES YA', 90)),
('OAXACA+SAN A0RES ZABACHE', ('OAXACA+SAN ANDRES ZABACHE', 94)),
('OAXACA+SAN A0RES ZAUTLA', ('OAXACA+SAN ANDRES ZAUTLA', 94)),
('OAXACA+SAN ANTONINO CASTILLO VELASCO',
('OAXACA+SAN ANTONINO CASTILLO VELASC', 99)),
('OAXACA+SAN ANTONIO NANAHUATIPAM', ('OAXACA+SAN ANTONIO NANAHUAT!PAM', 97)),
('OAXACA+SAN BALTAZAR CHICHICAPAM', ('OAXACA+SAN BALTAZAR CHICHIC PAM', 97)),
('OAXACA+SAN BALTAZAR YATZACHI EL BAJO',
('OAXACA+SAN BALTAZAR YATZACHI EL BAJ', 99)),
('OAXACA+SAN FELIPE TEJALAPAM', ('OAXACA+SAN FELIPE TEJAL PAM', 96)),
('OAXACA+SAN FRANCISCO CAHUACUA', ('OAXACA+SAN FRANCISCO CAHUACU', 98)),
('OAXACA+SAN FRANCISCO CHI0UA', ('OAXACA+SAN FRANCISCO CHINDUA', 95)),
('OAXACA+SAN FRANCISCO IXHUATAN', ('OAXACA+SAN FRANCISCO IXHUAT N', 97)),
('OAXACA+SAN JOSE ESTANCIA GRA0E', ('OAXACA+SAN JOSE ESTANCIA GRANDE', 95)),
('OAXACA+SAN JOSE I0EPE0ENCIA', ('OAXACA+SAN JOSE INDEPENDENCIA', 89)),
('OAXACA+SAN JUAN BAUTISTA COIXTLAHUACA',
('OAXACA+SAN JUAN BAUTISTA COIXTLAHUA', 97)),
('OAXACA+SAN JUAN BAUTISTA TLACHICHILCO',
('OAXACA+SAN JUAN BAUTISTA TLACHICHIL', 97)),
('OAXACA+SAN JUAN BAUTISTA TLACOATZINTEPEC',
('OAXACA+SAN JUAN BAUTISTA TLACOATZIN', 93)),
('OAXACA+SAN JUAN BAUTISTA VALLE NACIONAL',
('OAXACA+SAN JUAN BAUTISTA VALLE NACI', 95)),
('OAXACA+SAN JUAN MIXTEPEC DTO. 08 ',
('OAXACA+SAN JUAN MIXTEPEC DISTR. 0', 91)),
('OAXACA+SAN JUAN MIXTEPEC DTO. 26 ',
('OAXACA+SAN JUAN MIXTEPEC DISTR. 2', 91)),
('OAXACA+SAN JUAN TABAA', ('OAXACA+SAN JUAN TABA', 98)),
('OAXACA+SAN JUAN YAEE', ('OAXACA+SAN JUAN YAE', 97)),
('OAXACA+SAN MARTIN LACHILA', ('OAXACA+SAN MARTIN LACHIL', 98)),
('OAXACA+SAN MATEO RIO HO0O', ('OAXACA+SAN MATEO RIO HONDO', 94)),
('OAXACA+SAN MATEO SI0IHUI', ('OAXACA+SAN MATEO SINDIHUI', 94)),
('OAXACA+SAN MATEO YUCUTI0O', ('OAXACA+CALIHUAL', 86)),
('OAXACA+SAN MIGUEL ALOAPAM', ('OAXACA+SAN MIGUEL ALO PAM', 96)),
('OAXACA+SAN MIGUEL EL GRA0E', ('OAXACA+SAN MIGUEL EL GRANDE', 94)),
('OAXACA+SAN MIGUEL TILQUIAPAM', ('OAXACA+SAN MIGUEL TILQUI PAM', 96)),
('OAXACA+SAN PEDRO COXCALTEPEC CANTAROS',
('OAXACA+SAN PEDRO COXCALTEPEC CANTAR', 97)),
('OAXACA+SAN PEDRO MIXTEPEC DTO. 22 ',
('OAXACA+SAN PEDRO MIXTEPEC DISTR.', 87)),
('OAXACA+SAN PEDRO MIXTEPEC DTO. 26 ',
('OAXACA+SAN PEDRO MIXTEPEC DISTR.', 87)),
('OAXACA+SAN PEDRO TIDAA', ('OAXACA+SAN PEDRO TIDA', 98)),
('OAXACA+SAN PEDRO TOTOLAPAM', ('OAXACA+SAN PEDRO TOTOLAPA', 98)),
('OAXACA+SAN PEDRO Y SAN PABLO TEPOSCOLULA',
('OAXACA+SAN PEDRO Y SAN PABLO TEPOSC', 93)),
('OAXACA+SAN PEDRO Y SAN PABLO TEQUIXTEPEC',
('OAXACA+SAN PEDRO Y SAN PABLO TEQUIX', 93)),
('OAXACA+SAN RAYMU0O JALPAN', ('OAXACA+SAN RAYMUNDO JALPAN', 94)),
('OAXACA+SAN SEBASTIAN NICANA0UTA', ('OAXACA+SAN SEBASTIAN NICANANDUTA', 95)),
('OAXACA+SAN SEBASTIAN RIO HO0O', ('OAXACA+SAN SEBASTIAN RIO HONDO', 95)),
('OAXACA+SAN SEBASTIAN TECOMAXTLAHUACA',
('OAXACA+SAN SEBASTIAN TECOMAXTLAHUAC', 99)),
('OAXACA+SANTA CATARINA TICUA', ('OAXACA+SANTA CATARINA TICU', 98)),
('OAXACA+SANTA CRUZ ITU0UJIA', ('OAXACA+SANTA CRUZ ITUNDUJIA', 94)),
('OAXACA+SANTA CRUZ NU0ACO', ('OAXACA+SANTA CRUZ NUNDACO', 94)),
('OAXACA+SANTA MARIA 0UAYACO', ('OAXACA+SANTA MARIA NDUAYACO', 94)),
('OAXACA+SANTA MARIA CHACHOAPAM', ('OAXACA+SANTA MARIA CHACHOPAM', 98)),
('OAXACA+SANTA MARIA HUAZOLOTITLAN',
('OAXACA+SANTA MARIA HUAZOLOTITL N', 97)),
('OAXACA+SANTA MARIA JALAPA DEL MARQUES',
('OAXACA+SANTA MARIA JALAPA DEL MARQU', 97)),
('OAXACA+SANTA MARIA LACHIXIO', ('OAXACA+SANTA MARIA LACHIX!O', 96)),
('OAXACA+SANTA MARIA PAPALO', ('OAXACA+SANTA MARIA P PALO', 96)),
('OAXACA+SANTIAGO LLANO GRA0E', ('OAXACA+SANTIAGO LLANO GRANDE', 95)),
('OAXACA+SANTIAGO NU0ICHE', ('OAXACA+SANTIAGO NUNDICHE', 94)),
('OAXACA+SANTIAGO XIACUI', ('OAXACA+SANTIAGO XIACU!', 98)),
('OAXACA+SANTIAGO YOSO0UA', ('OAXACA+SANTIAGO YOSONDUA', 94)),
('OAXACA+SANTO DOMINGO NUXAA', ('OAXACA+SANTO DOMINGO NUXA', 98)),
('OAXACA+SANTO DOMINGO TLATAYAPAM', ('OAXACA+SANTO DOMINGO TLATAY PAM', 97)),
('OAXACA+SANTO DOMINGO TONALA', ('OAXACA+SANTO DOMINGO TONAL', 98)),
('OAXACA+SANTO DOMINGO XAGACIA', ('OAXACA+SANTO DOMINGO XAGAC!A', 96)),
('OAXACA+SANTOS REYES PAPALO', ('OAXACA+SANTOS REYES P PALO', 96)),
('OAXACA+SILACAYOAPAM', ('OAXACA+SILACAYO PAM', 95)),
('OAXACA+TAMAZULAPAM DEL ESPIRITU SANTO',
('OAXACA+TAMAZULAPAM DEL ESPIRITU SAN', 97)),
('OAXACA+TEOTITLAN DE FLORES MAGON',
('OAXACA+TEOTITLAN DE FLORES MAGC/N', 95)),
('OAXACA+VILLA DE TAMAZULAPAM DEL PROGRESO',
('OAXACA+VILLA DE TAMAZUL PAM DEL PRO', 91)),
('OAXACA+VILLA DE TUTUTEPEC DE MELCHOR OCAMPO',
('OAXACA+VILLA DE TUTUTEPEC DE MELCHO', 90)),
('OAXACA+YUTA0UCHI DE GUERRERO', ('OAXACA+YUTANDUCHI DE GUERRERO', 95)),
('PUEBLA+CUAYUCA DE A0RADE', ('PUEBLA+CUAYUCA DE ANDRADE', 94)),
('PUEBLA+HUEHUETLAN EL GRA0E', ('PUEBLA+HUEHUETLAN EL GRANDE', 94)),
('PUEBLA+JUAN GALI0O', ('PUEBLA+JUAN GALINDO', 92)),
('PUEBLA+JUAN N. ME0EZ', ('PUEBLA+JUAN N. MENDEZ', 93)),
('PUEBLA+SAN A0RES CHOLULA', ('PUEBLA+SAN ANDRES CHOLULA', 94)),
('PUEBLA+SAN DIEGO LA MESA TOCHIMILTZINGO',
('PUEBLA+SAN DIEGO LA MESA TOCHIMILTZ', 95)),
('PUEBLA+SAN JERONIMO XAYACATLAN', ('PUEBLA+SAN JERONIMO XAYACATL N', 97)),
('PUEBLA+SAN JOSE MIAHUATLAN', ('PUEBLA+SAN JOSE MIAHUATL N', 96)),
('PUEBLA+SAN MATIAS TLALANCALECA', ('PUEBLA+SAN MAT!AS TLALANCALECA', 97)),
('PUEBLA+TLAPANALA', ('PUEBLA+TLAPANAL', 97)),
('PUEBLA+XAYACATLAN DE BRAVO', ('PUEBLA+XAYACATL N DE BRAVO', 96)),
('PUEBLA+YAONAHUAC', ('PUEBLA+YAON HUAC', 94)),
('PUEBLA+ZAPOTITLAN DE ME0EZ', ('PUEBLA+ZAPOTITLAN DE MENDEZ', 94)),
('QUERETARO+LA0A DE MATAMOROS', ('QUERETARO+LANDA DE MATAMOROS', 95)),
('QUINTANA ROO+BACALAR', ('QUINTANA ROO+LAZARO C RDENAS', 71)),
('QUINTANA ROO+LAZARO CARDENAS', ('QUINTANA ROO+LAZARO C RDENAS', 96)),
('QUINTANA ROO+TULUM', ('QUINTANA ROO+LAZARO C RDENAS', 86)),
('SAN LUIS POTOSI+CIUDAD FERNA0EZ', ('SAN LUIS POTOSI+CIUDAD FERNANDEZ', 95)),
('SAN LUIS POTOSI+TAMPAMOLON CORONA',
('SAN LUIS POTOSI+TAMPAMOLC/N CORONA', 96)),
('SAN LUIS POTOSI+TANCANHUITZ',
('SAN LUIS POTOSI+TANCANHUITZ DE SANTOS', 95)),
('SINALOA+COSALA', ('SINALOA+COSAL', 96)),
('SONORA+ARIVECHI', ('SONORA+GENERAL PLUTARCO ELIAS CALLE', 86)),
('SONORA+GENERAL PLUTARCO ELIAS CALLES',
('SONORA+GENERAL PLUTARCO ELIAS CALLE', 99)),
('SONORA+SUAQUI GRA0E', ('SONORA+SUAQUI GRANDE', 92)),
('TABASCO+CU0UACAN', ('TABASCO+CUNDUACAN', 91)),
('TABASCO+JALPA DE ME0EZ', ('TABASCO+JALPA DE MENDEZ', 93)),
('TAMAULIPAS+GOMEZ FARIAS', ('TAMAULIPAS+GOMEZ FAR!AS', 96)),
('TAMAULIPAS+ME0EZ', ('TAMAULIPAS+MENDEZ', 91)),
('TAMAULIPAS+SAN FERNA0O', ('TAMAULIPAS+SAN FERNANDO', 93)),
('TLAXCALA+APETATITLAN DE ANTONIO CARVAJAL',
('TLAXCALA+APETATITLAN DE ANTONIO CARVA', 96)),
('TLAXCALA+ATLTZAYANCA', ('TLAXCALA+ALTZAYANCA', 97)),
('TLAXCALA+IXTACUIXTLA DE MARIANO MATAMOROS',
('TLAXCALA+IXTACUIXTLA DE MARIANO MATAM', 95)),
('TLAXCALA+LAZARO CARDENAS', ('TLAXCALA+LAZARO C RDENAS', 96)),
('TLAXCALA+MAZATECOCHCO DE JOSE MARIA MORELOS',
('TLAXCALA+MAZATECOCHCO DE JOSE MARIA M', 92)),
('TLAXCALA+NANACAMILPA DE MARIANO ARISTA',
('TLAXCALA+NANACAMILPA DE MARIANO ARIST', 99)),
('TLAXCALA+TEPETITLA DE LARDIZABAL',
('TLAXCALA+TEPETITLA DE LARDIZ BAL', 97)),
('TLAXCALA+YAUHQUEMEHCAN', ('TLAXCALA+YAUHQUEMECAN', 98)),
('TLAXCALA+ZILTLALTEPEC DE TRINIDAD SANCHEZ SANTOS',
('TLAXCALA+ZITLALTEPEC DE TRINIDAD', 87)),
('VERACRUZ+ALAMO TEMAPACHE', ('VERACRUZ+TEMAPACHE', 95)),
('VERACRUZ+ALTO LUCERO DE GUTIERREZ BARRIOS',
('VERACRUZ+ALTO LUCERO DE GUTIERREZ BAR', 95)),
('VERACRUZ+BA0ERILLA', ('VERACRUZ+BANDERILLA', 92)),
('VERACRUZ+BOCA DEL RIO', ('VERACRUZ+BOCA DEL R!O', 95)),
('VERACRUZ+CAMERINO Z. ME0OZA', ('VERACRUZ+CAMERINO Z. MENDOZA', 95)),
('VERACRUZ+CAZONES DE HERRERA', ('VERACRUZ+CAZONES', 90)),
('VERACRUZ+COSAUTLAN DE CARVAJAL', ('VERACRUZ+COSAUTL N DE CARVAJAL', 97)),
('VERACRUZ+HUILOAPAN DE CUAUHTEMOC', ('VERACRUZ+HUILOAPAN', 90)),
('VERACRUZ+IXHUATLAN DE MADERO', ('VERACRUZ+IXHUATL N DE MADERO', 96)),
('VERACRUZ+LA0ERO Y COSS', ('VERACRUZ+LANDERO Y COSS', 93)),
('VERACRUZ+MARTINEZ DE LA TORRE', ('VERACRUZ+MART!NEZ DE LA TORRE', 97)),
('VERACRUZ+MEDELLIN', ('VERACRUZ+MEDELL!N', 94)),
('VERACRUZ+NANCHITAL DE LAZARO CARDENAS DEL RIO',
('VERACRUZ+NANCHITAL DE LAZARO C RDENAS', 88)),
('VERACRUZ+PLATON SANCHEZ', ('VERACRUZ+PLATON S NCHEZ', 96)),
('VERACRUZ+SAN A0RES TENEJAPAN', ('VERACRUZ+SAN ANDRES TENEJAPAN', 95)),
('VERACRUZ+SAN A0RES TUXTLA', ('VERACRUZ+SAN ANDRES TUXTLA', 94)),
('VERACRUZ+SAN RAFAEL', ('OAXACA+SAN PEDRO Y SAN PABLO TEQUIX', 86)),
('VERACRUZ+SANTIAGO SOCHIAPAN', ('VERACRUZ+HUILOAPAN', 86)),
('VERACRUZ+SAYULA DE ALEMAN', ('VERACRUZ+SAYULA DE ALEM N', 96)),
('VERACRUZ+TUXPAN', ('VERACRUZ+TUXPAM', 93)),
('VERACRUZ+ZONTECOMATLAN DE LOPEZ Y FUENTES',
('VERACRUZ+ZONTECOMATL N DE LOPEZ Y FUE', 92)),
('YUCATAN+ABALA', ('YUCATAN+ABAL', 96)),
('YUCATAN+BOKOBA', ('YUCATAN+BOKOB', 96)),
('YUCATAN+CHACSINKIN', ('YUCATAN+CHACSINK!N', 94)),
('YUCATAN+CHICHIMILA', ('YUCATAN+CHICHIMIL', 97)),
('YUCATAN+CHIKI0ZONOT', ('YUCATAN+CHIKINDZONOT', 92)),
('YUCATAN+CHOCHOLA', ('YUCATAN+CHOCHOL', 97)),
('YUCATAN+CUZAMA', ('YUCATAN+CUZAM', 96)),
('YUCATAN+DZIDZANTUN', ('YUCATAN+DZIDZANTPSN', 92)),
('YUCATAN+DZILAM GONZALEZ', ('YUCATAN+DZILAM GONZ LEZ', 96)),
('YUCATAN+HALACHO', ('YUCATAN+HOLOCHO', 87)),
('YUCATAN+HOCABA', ('YUCATAN+HOCAB', 96)),
('YUCATAN+HUNUCMA', ('YUCATAN+HUNUCM', 97)),
('YUCATAN+KOPOMA', ('YUCATAN+KOPOM', 96)),
('YUCATAN+MOCOCHA', ('YUCATAN+MOCOCH', 97)),
('YUCATAN+PANABA', ('YUCATAN+PANAB', 96)),
('YUCATAN+SUCILA', ('YUCATAN+SUCIL', 96)),
('YUCATAN+YAXCABA', ('YUCATAN+YAXCAB', 97)),
('ZACATECAS+NOCHISTLAN DE MEJIA', ('ZACATECAS+NOCHISTLAN DE MEJ!A', 97)),
('ZACATECAS+RIO GRA0E', ('ZACATECAS+RIO GRANDE', 92)),
('ZACATECAS+SANTA MARIA DE LA PAZ', ('ZACATECAS+SUSTICAC N', 86)),
('ZACATECAS+SUSTICACAN', ('ZACATECAS+SUSTICAC N', 95)),
('ZACATECAS+VALPARAISO', ('ZACATECAS+VALPARA!SO', 95)),
('ZACATECAS+VETAGRA0E', ('ZACATECAS+VETAGRANDE', 92)),
('ZACATECAS+VILLA GARCIA', ('ZACATECAS+VILLA GARC!A', 95))]
#Como calculo el diccionario 
{dis:process.extractOne(dis,nomatch_gdf)[0for dis in sorted(nomatch_df)}
{'AGUASCALIENTES+TEPEZALA': 'AGUASCALIENTES+TEPEZAL',
'BAJA CALIFORNIA SUR+COMO0U': 'BAJA CALIFORNIA SUR+COMONDU',
'CAMPECHE+CA0ELARIA': 'CAMPECHE+CANDELARIA',
'CAMPECHE+HOPELCHEN': 'CAMPECHE+HOPELCHAN',
'CHIAPAS+CATAZAJA': 'CHIAPAS+CATAZAJ',
'CHIAPAS+COPAINALA': 'CHIAPAS+COPAINAL',
'CHIAPAS+LA GRA0EZA': 'CHIAPAS+LA GRANDEZA',
'CHIAPAS+LA I0EPE0ENCIA': 'CHIAPAS+LA INDEPENDENCIA',
'CHIAPAS+SAN A0RES DURAZNAL': 'CHIAPAS+SAN ANDRES DURAZNAL',
'CHIAPAS+SAN CRISTOBAL DE LAS CASAS': 'CHIAPAS+SAN CRISTABAL DE LAS CASAS',
'CHIAPAS+SAN FERNA0O': 'CHIAPAS+SAN FERNANDO',
'CHIAPAS+SITALA': 'CHIAPAS+SITAL',
'CHIAPAS+TONALA': 'CHIAPAS+TONAL',
'CHIAPAS+TUMBALA': 'CHIAPAS+TUMBAL',
'CHIHUAHUA+ALLE0E': 'CHIHUAHUA+ALLENDE',
'CHIHUAHUA+CASAS GRA0ES': 'CHIHUAHUA+CASAS GRANDES',
'CHIHUAHUA+NUEVO CASAS GRA0ES': 'CHIHUAHUA+NUEVO CASAS GRANDES',
'CHIHUAHUA+TEMOSACHIC': 'CHIHUAHUA+TEMOSACHI',
'COAHUILA+ALLE0E': 'COAHUILA+ALLENDE',
'COAHUILA+CA0ELA': 'COAHUILA+CANDELA',
'COAHUILA+CUATRO CIENEGAS': 'COAHUILA+CUATROCIENEGAS',
'DISTRITO FEDERAL+ALVARO OBREGON': 'D.F.+ALVARO OBREGON',
'DISTRITO FEDERAL+AZCAPOTZALCO': 'D.F.+AZCAPOTZALCO',
'DISTRITO FEDERAL+BENITO JUAREZ': 'D.F.+BENITO JUAREZ',
'DISTRITO FEDERAL+COYOACAN': 'D.F.+COYOACAN',
'DISTRITO FEDERAL+CUAJIMALPA DE MORELOS': 'NAYARIT+BAHIA DE BANDERAS',
'DISTRITO FEDERAL+CUAUHTEMOC': 'D.F.+CUAUHTEMOC',
'DISTRITO FEDERAL+GUSTAVO A. MADERO': 'D.F.+GUSTAVO A. MADERO',
'DISTRITO FEDERAL+IZTACALCO': 'D.F.+IZTACALCO',
'DISTRITO FEDERAL+IZTAPALAPA': 'D.F.+IZTAPALAPA',
'DISTRITO FEDERAL+LA MAGDALENA CONTRERAS': 'D.F.+LA MAGDALENA CONTRERAS',
'DISTRITO FEDERAL+MIGUEL HIDALGO': 'HIDALGO+ZIMAP N',
'DISTRITO FEDERAL+MILPA ALTA': 'D.F.+MILPA ALTA',
'DISTRITO FEDERAL+TLAHUAC': 'D.F.+TLAHUAC',
'DISTRITO FEDERAL+TLALPAN': 'D.F.+TLALPAN',
'DISTRITO FEDERAL+VENUSTIANO CARRANZA': 'D.F.+VENUSTIANO CARRANZA',
'DISTRITO FEDERAL+XOCHIMILCO': 'D.F.+XOCHIMILCO',
'DURANGO+I0E': 'DURANGO+INDE',
'GUANAJUATO+APASEO EL GRA0E': 'GUANAJUATO+APASEO EL GRANDE',
'GUANAJUATO+DOLORES HIDALGO CUNA DE LA I0EPE0ENCIA NACIONAL': 'GUANAJUATO+DOLORES HIDALGO',
'GUANAJUATO+SAN MIGUEL DE ALLE0E': 'OAXACA+SAN JUAN TABA',
'GUANAJUATO+SANTA CRUZ DE JUVENTINO ROSAS': 'GUANAJUATO+SANTA CRUZ DE JUVENTINO ROSA',
'GUANAJUATO+TARA0ACUAO': 'GUANAJUATO+TARANDACUAO',
'GUERRERO+COAHUAYUTLA DE JOSE MARIA IZAZAGA': 'GUERRERO+COAHUAYUTLA DE JOSE MARIA',
'GUERRERO+COCHOAPA EL GRA0E': 'GUERRERO+OLINAL',
'GUERRERO+IGUALA DE LA I0EPE0ENCIA': 'GUERRERO+IGUALA DE LA INDEPENDENCIA',
'GUERRERO+ILIATENCO': 'GUERRERO+LA UNION DE ISIDORO MONTES D',
'GUERRERO+JOSE JOAQUIN DE HERRERA': 'GUERRERO+OLINAL',
'GUERRERO+JUCHITAN': 'GUERRERO+LA UNION DE ISIDORO MONTES D',
'GUERRERO+LA UNION DE ISIDORO MONTES DE OCA': 'GUERRERO+LA UNION DE ISIDORO MONTES D',
'GUERRERO+MARQUELIA': 'GUERRERO+LA UNION DE ISIDORO MONTES D',
'GUERRERO+OLINALA': 'GUERRERO+OLINAL',
'GUERRERO+ZIHUATANEJO DE AZUETA': 'GUERRERO+OLINAL',
'GUERRERO+ZIRA0ARO': 'GUERRERO+ZIRANDARO',
'HIDALGO+ATOTONILCO EL GRA0E': 'HIDALGO+ATOTONILCO EL GRANDE',
'HIDALGO+SANTIAGO TULANTEPEC DE LUGO GUERRERO': 'HIDALGO+SANTIAGO TULANTEPEC DE LUGO',
'HIDALGO+TULA DE ALLE0E': 'HIDALGO+TULA DE ALLENDE',
'HIDALGO+ZACUALTIPAN DE ANGELES': 'HIDALGO+ZACUALTIP N DE ANGELES',
'HIDALGO+ZIMAPAN': 'HIDALGO+ZIMAP N',
'JALISCO+ARA0AS': 'JALISCO+ARANDAS',
'JALISCO+CUAUTITLAN DE GARCIA BARRAGAN': 'JALISCO+CUAUTITLAN DE GARCIA BARRAG',
'JALISCO+CUQUIO': 'JALISCO+CUQU!O',
'JALISCO+IXTLAHUACAN DE LOS MEMBRILLOS': 'JALISCO+IXTLAHUACAN DE LOS MEMBRILLO',
'JALISCO+SAN DIEGO DE ALEJA0RIA': 'JALISCO+SAN DIEGO DE ALEJANDRIA',
'JALISCO+SAN IGNACIO CERRO GORDO': 'JALISCO+ARANDAS',
'JALISCO+SAN MARTIN HIDALGO': 'JALISCO+SAN MARTIN DE HIDALGO',
'JALISCO+TALPA DE ALLE0E': 'JALISCO+TALPA DE ALLENDE',
'JALISCO+TONALA': 'JALISCO+TONAL',
'JALISCO+ZAPOTLAN EL GRA0E': 'JALISCO+ZAPOTLAN EL GRANDE',
'MEXICO+LUVIANOS': 'MEXICO+VILLA DE ALLENDE',
'MEXICO+SAN JOSE DEL RINCON': 'MEXICO+TEC MAC',
'MEXICO+TECAMAC': 'MEXICO+TEC MAC',
'MEXICO+TONANITLA': 'JALISCO+TONAL',
'MEXICO+VILLA DE ALLE0E': 'MEXICO+VILLA DE ALLENDE',
'MICHOACAN+ALVARO OBREGON': 'MICHOACAN+AVARO OBREGON',
'MICHOACAN+CHAVI0A': 'MICHOACAN+CHAVINDA',
'MICHOACAN+CHUCA0IRO': 'MICHOACAN+CHUCANDIRO',
'MICHOACAN+COALCOMAN DE VAZQUEZ PALLARES': 'MICHOACAN+COALCOMAN DE VAZQUEZ PALLARE',
'MICHOACAN+COPA0ARO': 'MICHOACAN+COPANDARO',
'MICHOACAN+ECUA0UREO': 'MICHOACAN+ECUANDUREO',
'MICHOACAN+HUA0ACAREO': 'MICHOACAN+HUANDACAREO',
'MICHOACAN+I0APARAPEO': 'MICHOACAN+INDAPARAPEO',
'MICHOACAN+JIMENEZ': 'MICHOACAN+JIMINEZ',
'MICHOACAN+PANI0ICUARO': 'MICHOACAN+PANINDICUARO',
'MICHOACAN+PURUA0IRO': 'MICHOACAN+PURUANDIRO',
'MICHOACAN+QUERE0ARO': 'MICHOACAN+QUERENDARO',
'MICHOACAN+TANGAMA0APIO': 'MICHOACAN+TANGAMANDAPIO',
'MICHOACAN+TINGUI0IN': 'MICHOACAN+TINGUINDIN',
'MORELOS+ZACATEPEC': 'MORELOS+ZACATEPEC DE HIDALGO',
'MORELOS+ZACUALPAN': 'MORELOS+ZACUALPAN DE AMILPAS',
'NAYARIT+BAHIA DE BA0ERAS': 'NAYARIT+BAHIA DE BANDERAS',
'NUEVO LEON+ALLE0E': 'NUEVO LEON+ALLENDE',
'NUEVO LEON+DR. ARROYO': 'NUEVO LEON+DOCTOR ARROYO',
'NUEVO LEON+DR. COSS': 'NUEVO LEON+DOCTOR COSS',
'NUEVO LEON+DR. GONZALEZ': 'NUEVO LEON+DOCTOR GONZALEZ',
'NUEVO LEON+GRAL. BRAVO': 'NUEVO LEON+GENERAL BRAVO',
'NUEVO LEON+GRAL. ESCOBEDO': 'NUEVO LEON+GENERAL ESCOBEDO',
'NUEVO LEON+GRAL. TERAN': 'NUEVO LEON+GENERAL TERAN',
'NUEVO LEON+GRAL. TREVINO': 'NUEVO LEON+GENERAL TREVINO',
'NUEVO LEON+GRAL. ZARAGOZA': 'NUEVO LEON+GENERAL ZARAGOZA',
'NUEVO LEON+GRAL. ZUAZUA': 'NUEVO LEON+GENERAL ZUAZUA',
'OAXACA+CA0ELARIA LOXICHA': 'OAXACA+CANDELARIA LOXICHA',
'OAXACA+CALIHUALA': 'OAXACA+CALIHUAL',
'OAXACA+CAPULALPAM DE ME0EZ': 'OAXACA+CAPULALPAM DE MENDEZ',
'OAXACA+CHAHUITES': 'OAXACA+CHAUITES',
'OAXACA+CHIQUIHUITLAN DE BENITO JUAREZ': 'OAXACA+CHIQUIHUITL N DE BENITO JUAR',
'OAXACA+CUYAMECALCO VILLA DE ZARAGOZA': 'OAXACA+CUYAMECALCO VILLA DE ZARAGOZ',
'OAXACA+HEROICA CIUDAD DE EJUTLA DE CRESPO': 'OAXACA+SAN ANDRES LAGUNAS',
'OAXACA+HEROICA CIUDAD DE HUAJUAPAN DE LEON': 'OAXACA+HEROICA CIUDAD DE HUAJUAPAN',
'OAXACA+HEROICA CIUDAD DE JUCHITAN DE ZARAGOZA': 'OAXACA+SAN ANDRES LAGUNAS',
'OAXACA+MAGDALENA YODOCONO DE PORFIRIO DIAZ': 'OAXACA+MAGDALENA YODOCONO DE PORFIR',
'OAXACA+MARTIRES DE TACUBAYA': 'OAXACA+M RTIRES DE TACUBAYA',
'OAXACA+MATIAS ROMERO AVE0ANO': 'OAXACA+MATIAS ROMERO',
'OAXACA+MIAHUATLAN DE PORFIRIO DIAZ': 'OAXACA+MIAHUATLAN DE PORFIRIO D!AZ',
'OAXACA+MIXISTLAN DE LA REFORMA': 'OAXACA+MIXISTL N DE LA REFORMA',
'OAXACA+SAN A0RES CABECERA NUEVA': 'OAXACA+SAN ANDRES CABECERA NUEVA',
'OAXACA+SAN A0RES DINICUITI': 'OAXACA+SAN ANDRES DINICUITI',
'OAXACA+SAN A0RES HUAXPALTEPEC': 'OAXACA+SAN ANDRES HUAXPALTEPEC',
'OAXACA+SAN A0RES HUAYAPAM': 'OAXACA+SAN ANDRES HUAY PAM',
'OAXACA+SAN A0RES IXTLAHUACA': 'OAXACA+SAN ANDRES IXTLAHUACA',
'OAXACA+SAN A0RES LAGUNAS': 'OAXACA+SAN ANDRES LAGUNAS',
'OAXACA+SAN A0RES NUXINO': 'OAXACA+SAN ANDRES NUXINO',
'OAXACA+SAN A0RES PAXTLAN': 'OAXACA+SAN ANDRES PAXTLAN',
'OAXACA+SAN A0RES SINAXTLA': 'OAXACA+SAN ANDRES SINAXTLA',
'OAXACA+SAN A0RES SOLAGA': 'OAXACA+SAN ANDRES SOLAGA',
'OAXACA+SAN A0RES TEOTILALPAM': 'OAXACA+SAN ANDRES TEOTILALPAM',
'OAXACA+SAN A0RES TEPETLAPA': 'OAXACA+SAN ANDRES TEPETLAPA',
'OAXACA+SAN A0RES YAA': 'OAXACA+SAN ANDRES YA',
'OAXACA+SAN A0RES ZABACHE': 'OAXACA+SAN ANDRES ZABACHE',
'OAXACA+SAN A0RES ZAUTLA': 'OAXACA+SAN ANDRES ZAUTLA',
'OAXACA+SAN ANTONINO CASTILLO VELASCO': 'OAXACA+SAN ANTONINO CASTILLO VELASC',
'OAXACA+SAN ANTONIO NANAHUATIPAM': 'OAXACA+SAN ANTONIO NANAHUAT!PAM',
'OAXACA+SAN BALTAZAR CHICHICAPAM': 'OAXACA+SAN BALTAZAR CHICHIC PAM',
'OAXACA+SAN BALTAZAR YATZACHI EL BAJO': 'OAXACA+SAN BALTAZAR YATZACHI EL BAJ',
'OAXACA+SAN FELIPE TEJALAPAM': 'OAXACA+SAN FELIPE TEJAL PAM',
'OAXACA+SAN FRANCISCO CAHUACUA': 'OAXACA+SAN FRANCISCO CAHUACU',
'OAXACA+SAN FRANCISCO CHI0UA': 'OAXACA+SAN FRANCISCO CHINDUA',
'OAXACA+SAN FRANCISCO IXHUATAN': 'OAXACA+SAN FRANCISCO IXHUAT N',
'OAXACA+SAN JOSE ESTANCIA GRA0E': 'OAXACA+SAN JOSE ESTANCIA GRANDE',
'OAXACA+SAN JOSE I0EPE0ENCIA': 'OAXACA+SAN JOSE INDEPENDENCIA',
'OAXACA+SAN JUAN BAUTISTA COIXTLAHUACA': 'OAXACA+SAN JUAN BAUTISTA COIXTLAHUA',
'OAXACA+SAN JUAN BAUTISTA TLACHICHILCO': 'OAXACA+SAN JUAN BAUTISTA TLACHICHIL',
'OAXACA+SAN JUAN BAUTISTA TLACOATZINTEPEC': 'OAXACA+SAN JUAN BAUTISTA TLACOATZIN',
'OAXACA+SAN JUAN BAUTISTA VALLE NACIONAL': 'OAXACA+SAN JUAN BAUTISTA VALLE NACI',
'OAXACA+SAN JUAN MIXTEPEC DTO. 08 ': 'OAXACA+SAN JUAN MIXTEPEC DISTR. 0',
'OAXACA+SAN JUAN MIXTEPEC DTO. 26 ': 'OAXACA+SAN JUAN MIXTEPEC DISTR. 2',
'OAXACA+SAN JUAN TABAA': 'OAXACA+SAN JUAN TABA',
'OAXACA+SAN JUAN YAEE': 'OAXACA+SAN JUAN YAE',
'OAXACA+SAN MARTIN LACHILA': 'OAXACA+SAN MARTIN LACHIL',
'OAXACA+SAN MATEO RIO HO0O': 'OAXACA+SAN MATEO RIO HONDO',
'OAXACA+SAN MATEO SI0IHUI': 'OAXACA+SAN MATEO SINDIHUI',
'OAXACA+SAN MATEO YUCUTI0O': 'OAXACA+CALIHUAL',
'OAXACA+SAN MIGUEL ALOAPAM': 'OAXACA+SAN MIGUEL ALO PAM',
'OAXACA+SAN MIGUEL EL GRA0E': 'OAXACA+SAN MIGUEL EL GRANDE',
'OAXACA+SAN MIGUEL TILQUIAPAM': 'OAXACA+SAN MIGUEL TILQUI PAM',
'OAXACA+SAN PEDRO COXCALTEPEC CANTAROS': 'OAXACA+SAN PEDRO COXCALTEPEC CANTAR',
'OAXACA+SAN PEDRO MIXTEPEC DTO. 22 ': 'OAXACA+SAN PEDRO MIXTEPEC DISTR.',
'OAXACA+SAN PEDRO MIXTEPEC DTO. 26 ': 'OAXACA+SAN PEDRO MIXTEPEC DISTR.',
'OAXACA+SAN PEDRO TIDAA': 'OAXACA+SAN PEDRO TIDA',
'OAXACA+SAN PEDRO TOTOLAPAM': 'OAXACA+SAN PEDRO TOTOLAPA',
'OAXACA+SAN PEDRO Y SAN PABLO TEPOSCOLULA': 'OAXACA+SAN PEDRO Y SAN PABLO TEPOSC',
'OAXACA+SAN PEDRO Y SAN PABLO TEQUIXTEPEC': 'OAXACA+SAN PEDRO Y SAN PABLO TEQUIX',
'OAXACA+SAN RAYMU0O JALPAN': 'OAXACA+SAN RAYMUNDO JALPAN',
'OAXACA+SAN SEBASTIAN NICANA0UTA': 'OAXACA+SAN SEBASTIAN NICANANDUTA',
'OAXACA+SAN SEBASTIAN RIO HO0O': 'OAXACA+SAN SEBASTIAN RIO HONDO',
'OAXACA+SAN SEBASTIAN TECOMAXTLAHUACA': 'OAXACA+SAN SEBASTIAN TECOMAXTLAHUAC',
'OAXACA+SANTA CATARINA TICUA': 'OAXACA+SANTA CATARINA TICU',
'OAXACA+SANTA CRUZ ITU0UJIA': 'OAXACA+SANTA CRUZ ITUNDUJIA',
'OAXACA+SANTA CRUZ NU0ACO': 'OAXACA+SANTA CRUZ NUNDACO',
'OAXACA+SANTA MARIA 0UAYACO': 'OAXACA+SANTA MARIA NDUAYACO',
'OAXACA+SANTA MARIA CHACHOAPAM': 'OAXACA+SANTA MARIA CHACHOPAM',
'OAXACA+SANTA MARIA HUAZOLOTITLAN': 'OAXACA+SANTA MARIA HUAZOLOTITL N',
'OAXACA+SANTA MARIA JALAPA DEL MARQUES': 'OAXACA+SANTA MARIA JALAPA DEL MARQU',
'OAXACA+SANTA MARIA LACHIXIO': 'OAXACA+SANTA MARIA LACHIX!O',
'OAXACA+SANTA MARIA PAPALO': 'OAXACA+SANTA MARIA P PALO',
'OAXACA+SANTIAGO LLANO GRA0E': 'OAXACA+SANTIAGO LLANO GRANDE',
'OAXACA+SANTIAGO NU0ICHE': 'OAXACA+SANTIAGO NUNDICHE',
'OAXACA+SANTIAGO XIACUI': 'OAXACA+SANTIAGO XIACU!',
'OAXACA+SANTIAGO YOSO0UA': 'OAXACA+SANTIAGO YOSONDUA',
'OAXACA+SANTO DOMINGO NUXAA': 'OAXACA+SANTO DOMINGO NUXA',
'OAXACA+SANTO DOMINGO TLATAYAPAM': 'OAXACA+SANTO DOMINGO TLATAY PAM',
'OAXACA+SANTO DOMINGO TONALA': 'OAXACA+SANTO DOMINGO TONAL',
'OAXACA+SANTO DOMINGO XAGACIA': 'OAXACA+SANTO DOMINGO XAGAC!A',
'OAXACA+SANTOS REYES PAPALO': 'OAXACA+SANTOS REYES P PALO',
'OAXACA+SILACAYOAPAM': 'OAXACA+SILACAYO PAM',
'OAXACA+TAMAZULAPAM DEL ESPIRITU SANTO': 'OAXACA+TAMAZULAPAM DEL ESPIRITU SAN',
'OAXACA+TEOTITLAN DE FLORES MAGON': 'OAXACA+TEOTITLAN DE FLORES MAGC/N',
'OAXACA+VILLA DE TAMAZULAPAM DEL PROGRESO': 'OAXACA+VILLA DE TAMAZUL PAM DEL PRO',
'OAXACA+VILLA DE TUTUTEPEC DE MELCHOR OCAMPO': 'OAXACA+VILLA DE TUTUTEPEC DE MELCHO',
'OAXACA+YUTA0UCHI DE GUERRERO': 'OAXACA+YUTANDUCHI DE GUERRERO',
'PUEBLA+CUAYUCA DE A0RADE': 'PUEBLA+CUAYUCA DE ANDRADE',
'PUEBLA+HUEHUETLAN EL GRA0E': 'PUEBLA+HUEHUETLAN EL GRANDE',
'PUEBLA+JUAN GALI0O': 'PUEBLA+JUAN GALINDO',
'PUEBLA+JUAN N. ME0EZ': 'PUEBLA+JUAN N. MENDEZ',
'PUEBLA+SAN A0RES CHOLULA': 'PUEBLA+SAN ANDRES CHOLULA',
'PUEBLA+SAN DIEGO LA MESA TOCHIMILTZINGO': 'PUEBLA+SAN DIEGO LA MESA TOCHIMILTZ',
'PUEBLA+SAN JERONIMO XAYACATLAN': 'PUEBLA+SAN JERONIMO XAYACATL N',
'PUEBLA+SAN JOSE MIAHUATLAN': 'PUEBLA+SAN JOSE MIAHUATL N',
'PUEBLA+SAN MATIAS TLALANCALECA': 'PUEBLA+SAN MAT!AS TLALANCALECA',
'PUEBLA+TLAPANALA': 'PUEBLA+TLAPANAL',
'PUEBLA+XAYACATLAN DE BRAVO': 'PUEBLA+XAYACATL N DE BRAVO',
'PUEBLA+YAONAHUAC': 'PUEBLA+YAON HUAC',
'PUEBLA+ZAPOTITLAN DE ME0EZ': 'PUEBLA+ZAPOTITLAN DE MENDEZ',
'QUERETARO+LA0A DE MATAMOROS': 'QUERETARO+LANDA DE MATAMOROS',
'QUINTANA ROO+BACALAR': 'QUINTANA ROO+LAZARO C RDENAS',
'QUINTANA ROO+LAZARO CARDENAS': 'QUINTANA ROO+LAZARO C RDENAS',
'QUINTANA ROO+TULUM': 'QUINTANA ROO+LAZARO C RDENAS',
'SAN LUIS POTOSI+CIUDAD FERNA0EZ': 'SAN LUIS POTOSI+CIUDAD FERNANDEZ',
'SAN LUIS POTOSI+TAMPAMOLON CORONA': 'SAN LUIS POTOSI+TAMPAMOLC/N CORONA',
'SAN LUIS POTOSI+TANCANHUITZ': 'SAN LUIS POTOSI+TANCANHUITZ DE SANTOS',
'SINALOA+COSALA': 'SINALOA+COSAL',
'SONORA+ARIVECHI': 'SONORA+GENERAL PLUTARCO ELIAS CALLE',
'SONORA+GENERAL PLUTARCO ELIAS CALLES': 'SONORA+GENERAL PLUTARCO ELIAS CALLE',
'SONORA+SUAQUI GRA0E': 'SONORA+SUAQUI GRANDE',
'TABASCO+CU0UACAN': 'TABASCO+CUNDUACAN',
'TABASCO+JALPA DE ME0EZ': 'TABASCO+JALPA DE MENDEZ',
'TAMAULIPAS+GOMEZ FARIAS': 'TAMAULIPAS+GOMEZ FAR!AS',
'TAMAULIPAS+ME0EZ': 'TAMAULIPAS+MENDEZ',
'TAMAULIPAS+SAN FERNA0O': 'TAMAULIPAS+SAN FERNANDO',
'TLAXCALA+APETATITLAN DE ANTONIO CARVAJAL': 'TLAXCALA+APETATITLAN DE ANTONIO CARVA',
'TLAXCALA+ATLTZAYANCA': 'TLAXCALA+ALTZAYANCA',
'TLAXCALA+IXTACUIXTLA DE MARIANO MATAMOROS': 'TLAXCALA+IXTACUIXTLA DE MARIANO MATAM',
'TLAXCALA+LAZARO CARDENAS': 'TLAXCALA+LAZARO C RDENAS',
'TLAXCALA+MAZATECOCHCO DE JOSE MARIA MORELOS': 'TLAXCALA+MAZATECOCHCO DE JOSE MARIA M',
'TLAXCALA+NANACAMILPA DE MARIANO ARISTA': 'TLAXCALA+NANACAMILPA DE MARIANO ARIST',
'TLAXCALA+TEPETITLA DE LARDIZABAL': 'TLAXCALA+TEPETITLA DE LARDIZ BAL',
'TLAXCALA+YAUHQUEMEHCAN': 'TLAXCALA+YAUHQUEMECAN',
'TLAXCALA+ZILTLALTEPEC DE TRINIDAD SANCHEZ SANTOS': 'TLAXCALA+ZITLALTEPEC DE TRINIDAD',
'VERACRUZ+ALAMO TEMAPACHE': 'VERACRUZ+TEMAPACHE',
'VERACRUZ+ALTO LUCERO DE GUTIERREZ BARRIOS': 'VERACRUZ+ALTO LUCERO DE GUTIERREZ BAR',
'VERACRUZ+BA0ERILLA': 'VERACRUZ+BANDERILLA',
'VERACRUZ+BOCA DEL RIO': 'VERACRUZ+BOCA DEL R!O',
'VERACRUZ+CAMERINO Z. ME0OZA': 'VERACRUZ+CAMERINO Z. MENDOZA',
'VERACRUZ+CAZONES DE HERRERA': 'VERACRUZ+CAZONES',
'VERACRUZ+COSAUTLAN DE CARVAJAL': 'VERACRUZ+COSAUTL N DE CARVAJAL',
'VERACRUZ+HUILOAPAN DE CUAUHTEMOC': 'VERACRUZ+HUILOAPAN',
'VERACRUZ+IXHUATLAN DE MADERO': 'VERACRUZ+IXHUATL N DE MADERO',
'VERACRUZ+LA0ERO Y COSS': 'VERACRUZ+LANDERO Y COSS',
'VERACRUZ+MARTINEZ DE LA TORRE': 'VERACRUZ+MART!NEZ DE LA TORRE',
'VERACRUZ+MEDELLIN': 'VERACRUZ+MEDELL!N',
'VERACRUZ+NANCHITAL DE LAZARO CARDENAS DEL RIO': 'VERACRUZ+NANCHITAL DE LAZARO C RDENAS',
'VERACRUZ+PLATON SANCHEZ': 'VERACRUZ+PLATON S NCHEZ',
'VERACRUZ+SAN A0RES TENEJAPAN': 'VERACRUZ+SAN ANDRES TENEJAPAN',
'VERACRUZ+SAN A0RES TUXTLA': 'VERACRUZ+SAN ANDRES TUXTLA',
'VERACRUZ+SAN RAFAEL': 'OAXACA+SAN PEDRO Y SAN PABLO TEQUIX',
'VERACRUZ+SANTIAGO SOCHIAPAN': 'VERACRUZ+HUILOAPAN',
'VERACRUZ+SAYULA DE ALEMAN': 'VERACRUZ+SAYULA DE ALEM N',
'VERACRUZ+TUXPAN': 'VERACRUZ+TUXPAM',
'VERACRUZ+ZONTECOMATLAN DE LOPEZ Y FUENTES': 'VERACRUZ+ZONTECOMATL N DE LOPEZ Y FUE',
'YUCATAN+ABALA': 'YUCATAN+ABAL',
'YUCATAN+BOKOBA': 'YUCATAN+BOKOB',
'YUCATAN+CHACSINKIN': 'YUCATAN+CHACSINK!N',
'YUCATAN+CHICHIMILA': 'YUCATAN+CHICHIMIL',
'YUCATAN+CHIKI0ZONOT': 'YUCATAN+CHIKINDZONOT',
'YUCATAN+CHOCHOLA': 'YUCATAN+CHOCHOL',
'YUCATAN+CUZAMA': 'YUCATAN+CUZAM',
'YUCATAN+DZIDZANTUN': 'YUCATAN+DZIDZANTPSN',
'YUCATAN+DZILAM GONZALEZ': 'YUCATAN+DZILAM GONZ LEZ',
'YUCATAN+HALACHO': 'YUCATAN+HOLOCHO',
'YUCATAN+HOCABA': 'YUCATAN+HOCAB',
'YUCATAN+HUNUCMA': 'YUCATAN+HUNUCM',
'YUCATAN+KOPOMA': 'YUCATAN+KOPOM',
'YUCATAN+MOCOCHA': 'YUCATAN+MOCOCH',
'YUCATAN+PANABA': 'YUCATAN+PANAB',
'YUCATAN+SUCILA': 'YUCATAN+SUCIL',
'YUCATAN+YAXCABA': 'YUCATAN+YAXCAB',
'ZACATECAS+NOCHISTLAN DE MEJIA': 'ZACATECAS+NOCHISTLAN DE MEJ!A',
'ZACATECAS+RIO GRA0E': 'ZACATECAS+RIO GRANDE',
'ZACATECAS+SANTA MARIA DE LA PAZ': 'ZACATECAS+SUSTICAC N',
'ZACATECAS+SUSTICACAN': 'ZACATECAS+SUSTICAC N',
'ZACATECAS+VALPARAISO': 'ZACATECAS+VALPARA!SO',
'ZACATECAS+VETAGRA0E': 'ZACATECAS+VETAGRANDE',
'ZACATECAS+VILLA GARCIA': 'ZACATECAS+VILLA GARC!A'}
# Luego, le damos un nombre al diccionario
changesMuni_df={dis:process.extractOne(dis,nomatch_gdf)[0for dis in sorted(nomatch_df)}
#Hacemos el cambio
datamuni.estaMuni.replace(changesMuni_df,inplace=True)
#Metemos la tabla al mapa.
MunicipiosMex=MunicipiosMex.merge(datamuni, on='estaMuni')
#Verificamos
MunicipiosMex.info()
<class 'geopandas.geodataframe.GeoDataFrame'>
Int64Index: 2497 entries, 0 to 2496
Data columns (total 16 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 CLAVE 2497 non-null object
1 NOM_MUN 2497 non-null object
2 NOMEDO 2497 non-null object
3 CVE_EDO 2497 non-null object
4 CVE_MUNI 2497 non-null object
5 Area 2497 non-null float64
6 geometry 2497 non-null geometry
7 estaMuni 2497 non-null object
8 Ubigeo 2497 non-null object
9 Entidad_Federativa 2497 non-null object
10 Municipio 2497 non-null object
11 Poblacion 2497 non-null int64
12 Pobreza 2497 non-null float64
13 IC_Reza_Educ 2497 non-null float64
14 IC_Care_en_Acce_Servi_Salud 2497 non-null float64
15 IC_Care_en_Ali 2497 non-null float64
dtypes: float64(5), geometry(1), int64(1), object(9)
memory usage: 331.6+ KB
#Eliminamos los que no vamos a utilizar
bye=['Municipio''Entidad_Federativa','CVE_EDO''CVE_MUNI']
MunicipiosMex.drop(columns=bye,inplace=True)

# keeping
MunicipiosMex.head()
#Lo guardamos
MunicipiosMex.to_file(os.path.join('maps',"dataMapMexico.gpkg"), layer='municipios'driver="GPKG")
#Ejercicio 2:
#Elija una variable numérica de sus datos combinados.
#Decide cuáles son los tres mejores esquemas de clasificación para esa variable.
#Haz un mapa para cada esquema seleccionado.
#Explorando una variable
#Esta vez, exploramos estadísticamente una variable en el mapa:
#Estadistica: Pobreza
MunicipiosMex.IC_Reza_Educ.describe()
#Graficamos los datos estadistucos, histogramas
import seaborn as sea

sea.displot(MunicipiosMex.IC_Reza_Educ, color='yellow')
<seaborn.axisgrid.FacetGrid at 0x7f8030952d60>
#This plot tells you the distribution of the values, but not the presence of outliers, which you are revealed in a boxplot:
#Diagrama de cajas
sea.boxplot(MunicipiosMex.IC_Reza_Educ, color='yellow',orient='h')
<Axes: >
import mapclassify 
import numpy as np

np.random.seed(12345# so we all get the same results!

# let's try 5 intervals
K=5
# same interval width, easy interpretation
ei5 = mapclassify.EqualInterval(MunicipiosMex['IC_Reza_Educ'], k=K)
# same interval width based on standard deviation, easy - but not as the previous one, poor when high skewness
msd = mapclassify.StdMean(MunicipiosMex['IC_Reza_Educ'])
# interval width varies, counts per interval are close, not easy to grasp, repeated values complicate cuts                                
q5=mapclassify.Quantiles(MunicipiosMex['IC_Reza_Educ'],k=K)

# based on similarity, good for multimodal data 
mb5 = mapclassify.MaximumBreaks(MunicipiosMex['IC_Reza_Educ'], k=K)
# based on similarity, good for skewed data
ht = mapclassify.HeadTailBreaks(MunicipiosMex['IC_Reza_Educ']) # no K needed
# based on similarity, optimizer
fj5 = mapclassify.FisherJenks(MunicipiosMex['IC_Reza_Educ'], k=K)
# based on similarity, optimizer
jc5 = mapclassify.JenksCaspall(MunicipiosMex['IC_Reza_Educ'], k=K)
# based on similarity, optimizer
mp5 = mapclassify.MaxP(MunicipiosMex['IC_Reza_Educ'], k=K)  
/opt/python/envs/default/lib/python3.8/site-packages/mapclassify/classifiers.py:1860: UserWarning: Numba not installed. Using slow pure python version.
warnings.warn(
# a frequency table by default/ es un algoritmo que tu no le dices cuantos intervalos quieres, y evalua la similutd 
ht
HeadTailBreaks

Interval Count
----------------------
[ 0.00, 27.72] | 1222
(27.72, 35.86] | 722
(35.86, 41.45] | 341
(41.45, 46.37] | 131
(46.37, 50.80] | 48
(50.80, 54.34] | 17
(54.34, 56.41] | 11
(56.41, 58.54] | 3
(58.54, 59.65] | 1
(59.65, 60.60] | 1
# group label
ht.yb
# labels and counts
np.unique(ht.yb,return_counts=True)
(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
array([1222, 722, 341, 131, 48, 17, 11, 3, 1, 1]))
# ht.yb into a pandas Series convertilo a pandas 

pd.Series(ht.yb).value_counts()
# these are the cuts, but it is not including the min value/ El valor donde hago el corte de los valores. 
#No dice el minimo valor, pero si el maximo
ht.bins
# completing the bins/Tenemos que añadirle el minimo en la posicion 0
HT_bins=list(ht.bins)
HT_bins.insert(0,MunicipiosMex.IC_Reza_Educ.min())
#Graficamos
sea.displot(MunicipiosMex.IC_Reza_Educ, bins=HT_bins,color='yellow')
<seaborn.axisgrid.FacetGrid at 0x7f802ee55d00>
#Todo lo que hemos calculado, el adcm de todas las tecnicas que hemos calculado y solo nos quedamos con las 3 que tengan menor error
class5 = q5, ei5,msd, ht, mb5, fj5, jc5, mp5
# Collect ADCM for each classifier
fits = np.array([ c.adcm for c in class5])
# Convert ADCM scores to a DataFrame
adcms = pd.DataFrame(fits)
# Add classifier names
adcms['classifier'] = [c.name for c in class5]
# Add column names to the ADCM
adcms.columns = ['ADCM''Classifier']
ax = sea.barplot(
    y='Classifier'x='ADCM'data=adcms, palette='Pastel1'
)
MunicipiosMex['QU'] = q5.yb 
MunicipiosMex['FJ'] = fj5.yb
MunicipiosMex['JC'] = jc5.yb
#Cuantos distritos hay en cada caso/ haow many cases per scheme:

class5new = q5,fj5, jc5
pd.DataFrame(
    {c.name: c.counts for c in class5new},
    index=['Class-{}'.format(i) for i in range(5)]
)
#Voy a graficar una de ellas.
import matplotlib.pyplot as plt

f, ax = plt.subplots(1figsize=(99))
MunicipiosMex.plot(column='QU'
        cmap='viridis'
        categorical=True,
        edgecolor='white'
        linewidth=0., 
        alpha=0.75
        legend=True,
        legend_kwds=dict(loc=2),
        ax=ax
       )

ax.set_axis_off()
#Voy a graficar la segunda de ellas.
import matplotlib.pyplot as plt

f, ax = plt.subplots(1figsize=(99))
MunicipiosMex.plot(column='FJ'
        cmap='plasma'
        categorical=True,
        edgecolor='white'
        linewidth=0., 
        alpha=0.75
        legend=True,
        legend_kwds=dict(loc=2),
        ax=ax
       )

ax.set_axis_off()
#Voy a graficar una de ellas.
import matplotlib.pyplot as plt

f, ax = plt.subplots(1figsize=(99))
MunicipiosMex.plot(column='JC'
        cmap='magma'
        categorical=True,
        edgecolor='white'
        linewidth=0., 
        alpha=0.75
        legend=True,
        legend_kwds=dict(loc=2),
        ax=ax
       )

ax.set_axis_off()
#Let's save what we have:

#Guardamos update
MunicipiosMex.to_file(os.path.join('maps',"dataMapMexico.gpkg"), layer='municipios'driver="GPKG")
#Ejercicio 3:
#Seleccione tres variables numéricas.

#Explore cada uno como se indica arriba:

#Si es necesario, invierta las variables (para que las correlaciones sean positivas)
#Si es necesario, vuelva a escalar las variables (para suavizar los valores atípicos)
#Evaluar los esquemas de clasificación para cada variable.
#Prepare un mapa para cada variable, utilizando el mejor esquema de clasificación para cada variable.
#insatisfechas
selected_variables = ['IC_Reza_Educ',
                     'IC_Care_en_Acce_Servi_Salud'
                     'IC_Care_en_Ali']
MunicipiosMex[selected_variables].describe()
sea.boxplot(MunicipiosMex[selected_variables])
<Axes: >
#
MunicipiosMex[selected_variables].hist();
#Mirada bivariada. Verificar que las tres variables tengan la misma correlacion o todas posi o todas nega. Todas presentan correlacion positiva
sea.pairplot(
    MunicipiosMex[selected_variables], kind="reg"diag_kind="kde"
)
<seaborn.axisgrid.PairGrid at 0x7f802d4127c0>
#Resolvemos los datos atipicos. Tranformamos los datos: hay tres tipos

columnsToScale=selected_variables


from sklearn.preprocessing import robust_scale as rs
from sklearn.preprocessing import power_transform as pt
from sklearn.preprocessing import quantile_transform as qt

rs_result=rs(MunicipiosMex[columnsToScale])
pt_result=pt(MunicipiosMex[columnsToScale])
qt_result=qt(MunicipiosMex[columnsToScale])
pd.DataFrame(rs_result).boxplot(vert=False)
<Axes: >
pd.DataFrame(pt_result).boxplot(vert=False)
<Axes: >
#Elegimos el que tenga menos cantidad de datos atipicos, este será el elegido 
pd.DataFrame(qt_result).boxplot(vert=False)
<Axes: >
# new names/ a todas las variables les voy a aumentar la letra t para saberque son las transformadas
selected_variables_t=[s+'_t' for s in selected_variables ]

# add colunms
MunicipiosMex[selected_variables_t]=qt_result
f, axs = plt.subplots( ncols=3nrows=2,figsize=(1010))
axs = axs.flatten()
# Start a loop over all the variables of interest
for i, col in enumerate(selected_variables_t + selected_variables):
    # select the axis where the map will go
    ax = axs[i]
    # Plot the map
    MunicipiosMex.plot(
        column=col,
        ax=ax,
        scheme="Quantiles",
        linewidth=0,
        cmap="RdPu",
    )
    # Remove axis clutter
    ax.set_axis_off()
    # Set the axis title to the name of variable being plotted
    ax.set_title(col)
# Display the figure
plt.show()
# update
MunicipiosMex.to_file(os.path.join('maps',"dataMapMexico.gpkg"), layer='municipios'driver="GPKG")
#Ejercicio 4
#Mantenga las tres variables anteriores, después de que las haya procesado previamente.
#Prepare un dendograma y decida cuál es mejor: 3 o 5 grupos.
#Agrupe los datos en la cantidad de grupos seleccionados.
#Prepare una visualización para perfilar cada clúster.
#Trace el mapa de conglomerados.
qt_result #Es el dato que voya utilizar con menoserrores 
#Agrupación
#Utilizamos el agrupamiento para organizar los datos en grupos homogéneos. 
#Permítanme usar un dendograma para explorar los posibles grupos:
from scipy.cluster import hierarchy as hc


Z = hc.linkage(qt_result, 'ward')
# calculate full dendrogram
plt.figure(figsize=(2510))
plt.title('Hierarchical Clustering Dendrogram')
plt.xlabel('cases')
plt.ylabel('distance')
hc.dendrogram(
    Z,
    leaf_rotation=90.,  # rotates the x axis labels
    leaf_font_size=1,  # font size for the x axis labels
)
plt.show()
#Pedimos 3 grupos
from sklearn.cluster import AgglomerativeClustering as agnes
# Set seed for reproducibility
np.random.seed(12345)
# Initialize the algorithm, requesting 3 clusters
model = agnes(linkage="ward"n_clusters=3).fit(MunicipiosMex[selected_variables_t])
# Assign labels to main data table
MunicipiosMex["hc_3"] = model.labels_
MunicipiosMex["hc_3"].value_counts()
#Promedio de grupo por cada variable
MunicipiosMex.groupby("hc_3")[selected_variables].mean()
MunicipiosMex[selected_variables]
#Preparamos una tabla con los datos obtenidos. Transformamos la data en formato long
# Index db on cluster ID
MunicipiosMex_long = MunicipiosMex.set_index("hc_3").copy()
# Keep only variables used for clustering
MunicipiosMex_long = MunicipiosMex_long[selected_variables]
# Stack column names into a column, obtaining
# a "long" version of the dataset
MunicipiosMex_long = MunicipiosMex_long.stack()
# Take indices into proper columns
MunicipiosMex_long = MunicipiosMex_long.reset_index()

# Check out result
MunicipiosMex_long.head()
# Rename column names
MunicipiosMex_long = MunicipiosMex_long.rename(
    columns={'level_1''Attribute'0'Values'}
)
MunicipiosMex_long.head()
# Configurar las facetas para poder hacer esta grafica de perfilado
facets = sea.FacetGrid(
    data=MunicipiosMex_long,
    col="hc_3",
    hue="Attribute",
    sharey=False,
    sharex=False,
    aspect=2,
    col_wrap=3,
)
# Construye la trama como una `sns.kdeplot`
facets.map(sea.kdeplot, "Values"fill=True).add_legend()
<seaborn.axisgrid.FacetGrid at 0x7f8027ea6940>
#Graficamos el mapa 
# Configuramos la figura
f, ax = plt.subplots(1figsize=(99))
#Trzamos valore unicos
MunicipiosMex.plot(
    column="hc_3"categorical=Truelegend=Truelinewidth=0ax=ax
)
# Remove axis
ax.set_axis_off()
# Display the map
plt.show()
#Ejercicio 5
#Calcule los tres vecindarios que se muestran arriba para sus datos.
#Seleccione un polígono y trácelo con sus vecinos como se indica arriba.
#Correlación espacial
#barrio
#Podemos calcular la vecindad en un mapa usando diferentes algoritmos:
#weights: manera de sacar vecindarios. Ahora veremos quien es el vecindarios rook. Si el poligono comparte una de sus aristas con otro
#poligono
from libpysal.weights import Queen, Rook, KNN

# rook
w_rook = Rook.from_dataframe(MunicipiosMex) 
/opt/python/envs/default/lib/python3.8/site-packages/libpysal/weights/weights.py:172: UserWarning: The weights matrix is not fully connected:
There are 4 disconnected components.
There are 2 islands with ids: 453, 602.
warnings.warn(message)
# rook se mueve en todas las direcciones
w_queen = Queen.from_dataframe(MunicipiosMex)
/opt/python/envs/default/lib/python3.8/site-packages/libpysal/weights/weights.py:172: UserWarning: The weights matrix is not fully connected:
There are 4 disconnected components.
There are 2 islands with ids: 453, 602.
warnings.warn(message)
# k nearest neighbors/ me aseguro de que las islas tengan vecinos 
w_knn = KNN.from_dataframe(MunicipiosMex, k=4)
# first one. Cuales son sus vecinos 
MunicipiosMex.head(1)
# cantidad de vecinos de ese distrito
w_rook.neighbors[0
[1, 3, 5]
# see
base=MunicipiosMex[MunicipiosMex.NOMEDO=="BAJA CALIFORNIA"].plot()
MunicipiosMex.iloc[w_rook.neighbors[0] ,].plot(ax=base,facecolor="yellow")
MunicipiosMex.head(1).plot(ax=base,facecolor="red")
<Axes: >
w_queen.neighbors[0]
[1, 3, 5]
base=MunicipiosMex[MunicipiosMex.NOMEDO=="BAJA CALIFORNIA"].plot()
MunicipiosMex.iloc[w_queen.neighbors[0] ,].plot(ax=base,facecolor="yellow")
MunicipiosMex.head(1).plot(ax=base,facecolor="red")
<Axes: >
w_knn.neighbors[0]
[3, 1, 2, 4]
base=MunicipiosMex[MunicipiosMex.NOMEDO=="BAJA CALIFORNIA"].plot()
MunicipiosMex.iloc[w_knn.neighbors[0],].plot(ax=base,facecolor="yellow")
MunicipiosMex.head(1).plot(ax=base,facecolor="red")
<Axes: >
# all the neighbors by row. Todos los vecinos que tiene cada fila
w_knn.neighbors
{0: [3, 1, 2, 4],
1: [0, 3, 2, 4],
2: [4, 1, 0, 3],
3: [0, 1, 2, 4],
4: [2, 6, 8, 7],
5: [2, 4, 6, 9],
6: [8, 7, 9, 4],
7: [8, 6, 9, 10],
8: [7, 6, 9, 10],
9: [10, 23, 8, 7],
10: [13, 23, 28, 17],
11: [34, 12, 20, 47],
12: [22, 11, 27, 19],
13: [17, 14, 28, 10],
14: [25, 15, 13, 24],
15: [21, 25, 14, 16],
16: [21, 26, 30, 15],
17: [28, 23, 13, 24],
18: [26, 31, 37, 16],
19: [22, 27, 12, 43],
20: [31, 42, 39, 18],
21: [15, 16, 30, 25],
22: [19, 12, 27, 11],
23: [28, 17, 38, 10],
24: [32, 25, 17, 14],
25: [24, 15, 14, 36],
26: [30, 37, 16, 18],
27: [19, 35, 22, 12],
28: [23, 17, 13, 38],
29: [38, 40, 23, 9],
30: [33, 26, 21, 37],
31: [42, 37, 41, 46],
32: [24, 40, 36, 48],
33: [30, 49, 36, 52],
34: [47, 39, 35, 20],
35: [47, 54, 75, 34],
36: [48, 32, 33, 25],
37: [41, 26, 31, 50],
38: [40, 23, 28, 32],
39: [47, 34, 42, 54],
40: [32, 38, 48, 51],
41: [50, 37, 46, 53],
42: [46, 31, 41, 53],
43: [71, 44, 19, 95],
44: [43, 81, 95, 71],
45: [56, 50, 52, 49],
46: [42, 53, 41, 50],
47: [34, 54, 35, 39],
48: [55, 51, 40, 36],
49: [52, 58, 60, 33],
50: [61, 41, 53, 66],
51: [65, 48, 40, 55],
52: [58, 49, 60, 62],
53: [61, 59, 50, 46],
54: [76, 47, 39, 35],
55: [58, 60, 52, 65],
56: [69, 45, 66, 62],
57: [76, 59, 78, 54],
58: [52, 60, 49, 55],
59: [53, 61, 46, 66],
60: [58, 52, 62, 49],
61: [66, 50, 53, 69],
62: [60, 58, 52, 64],
63: [65, 51, 87, 64],
64: [62, 82, 74, 55],
65: [51, 55, 64, 48],
66: [61, 69, 50, 56],
67: [77, 90, 84, 114],
68: [80, 99, 71, 108],
69: [66, 70, 56, 61],
70: [69, 74, 66, 56],
71: [99, 68, 109, 95],
72: [73, 79, 96, 59],
73: [72, 79, 96, 83],
74: [82, 70, 64, 83],
75: [88, 76, 85, 80],
76: [54, 89, 57, 75],
77: [84, 114, 90, 118],
78: [89, 112, 91, 57],
79: [83, 73, 72, 100],
80: [85, 68, 111, 108],
81: [44, 97, 95, 86],
82: [74, 87, 64, 92],
83: [92, 79, 100, 74],
84: [93, 77, 102, 114],
85: [80, 88, 115, 111],
86: [107, 101, 90, 160],
87: [82, 74, 98, 64],
88: [85, 89, 75, 91],
89: [78, 88, 91, 76],
90: [101, 125, 77, 114],
91: [89, 88, 127, 78],
92: [83, 98, 100, 79],
93: [102, 84, 118, 114],
94: [117, 116, 87, 98],
95: [109, 121, 120, 132],
96: [110, 73, 105, 100],
97: [132, 95, 120, 147],
98: [92, 100, 83, 87],
99: [103, 109, 71, 121],
100: [92, 83, 98, 79],
101: [90, 125, 151, 160],
102: [93, 118, 119, 106],
103: [121, 109, 99, 120],
104: [116, 133, 98, 105],
105: [133, 100, 96, 110],
106: [119, 131, 102, 134],
107: [86, 147, 97, 188],
108: [111, 122, 80, 115],
109: [121, 103, 120, 99],
110: [96, 126, 112, 105],
111: [108, 122, 115, 129],
112: [130, 126, 110, 78],
113: [183, 176, 63, 117],
114: [118, 119, 125, 124],
115: [111, 129, 123, 122],
116: [104, 143, 117, 94],
117: [94, 116, 143, 87],
118: [114, 119, 102, 124],
119: [118, 114, 106, 124],
120: [121, 132, 109, 138],
121: [120, 109, 103, 132],
122: [129, 111, 108, 128],
123: [129, 115, 127, 140],
124: [125, 119, 114, 118],
125: [124, 114, 118, 119],
126: [110, 112, 135, 137],
127: [130, 123, 91, 144],
128: [122, 142, 150, 129],
129: [122, 123, 115, 111],
130: [112, 127, 137, 126],
131: [106, 139, 146, 134],
132: [120, 138, 121, 97],
133: [105, 148, 104, 154],
134: [145, 119, 124, 106],
135: [137, 126, 136, 144],
136: [135, 148, 168, 137],
137: [135, 144, 126, 130],
138: [120, 132, 142, 152],
139: [146, 157, 131, 159],
140: [150, 129, 165, 123],
141: [153, 140, 123, 127],
142: [156, 138, 128, 158],
143: [116, 155, 104, 117],
144: [137, 153, 135, 130],
145: [149, 161, 134, 124],
146: [139, 131, 159, 177],
147: [164, 174, 107, 152],
148: [154, 168, 155, 133],
149: [161, 145, 170, 169],
150: [165, 158, 140, 171],
151: [160, 172, 169, 149],
152: [164, 156, 175, 138],
153: [144, 180, 141, 166],
154: [155, 148, 168, 133],
155: [154, 148, 143, 168],
156: [173, 171, 142, 158],
157: [167, 139, 190, 178],
158: [171, 165, 150, 173],
159: [179, 177, 193, 146],
160: [151, 172, 169, 163],
161: [149, 170, 169, 145],
162: [165, 150, 158, 171],
163: [172, 160, 192, 151],
164: [174, 152, 175, 147],
165: [150, 158, 171, 162],
166: [180, 185, 144, 153],
167: [190, 170, 157, 161],
168: [148, 154, 155, 136],
169: [172, 161, 170, 151],
170: [161, 169, 182, 167],
171: [173, 158, 156, 165],
172: [169, 160, 151, 182],
173: [171, 175, 156, 181],
174: [164, 175, 152, 198],
175: [173, 181, 152, 156],
176: [183, 269, 113, 143],
177: [178, 179, 199, 159],
178: [191, 177, 190, 203],
179: [177, 199, 159, 193],
180: [153, 166, 195, 144],
181: [175, 194, 173, 171],
182: [170, 169, 172, 161],
183: [176, 143, 269, 155],
184: [188, 232, 198, 235],
185: [197, 166, 195, 229],
186: [188, 192, 235, 241],
187: [210, 162, 180, 196],
188: [186, 184, 235, 251],
189: [190, 220, 191, 228],
190: [191, 167, 189, 178],
191: [178, 190, 203, 189],
192: [186, 241, 163, 200],
193: [201, 205, 206, 179],
194: [181, 196, 175, 173],
195: [247, 229, 185, 180],
196: [194, 236, 181, 173],
197: [185, 229, 168, 195],
198: [212, 174, 232, 213],
199: [208, 205, 179, 217],
200: [237, 280, 192, 253],
201: [202, 206, 193, 214],
202: [201, 207, 214, 221],
203: [222, 220, 226, 227],
204: [237, 189, 228, 182],
205: [217, 206, 199, 193],
206: [205, 217, 218, 201],
207: [202, 221, 209, 214],
208: [217, 199, 225, 205],
209: [216, 207, 221, 219],
210: [234, 187, 247, 195],
211: [223, 224, 222, 225],
212: [213, 198, 232, 264],
213: [212, 198, 274, 278],
214: [221, 206, 201, 202],
215: [219, 216, 262, 209],
216: [219, 209, 215, 256],
217: [218, 205, 208, 206],
218: [217, 206, 205, 230],
219: [216, 215, 209, 256],
220: [226, 227, 233, 203],
221: [214, 231, 202, 207],
222: [224, 227, 238, 211],
223: [239, 225, 211, 224],
224: [222, 238, 223, 211],
225: [223, 239, 208, 211],
226: [227, 220, 233, 222],
227: [226, 233, 220, 222],
228: [220, 226, 244, 233],
229: [247, 255, 195, 197],
230: [225, 218, 250, 239],
231: [221, 260, 214, 277],
232: [261, 264, 254, 184],
233: [227, 242, 226, 248],
234: [247, 255, 210, 279],
235: [251, 243, 241, 188],
236: [196, 275, 263, 265],
237: [204, 200, 259, 280],
238: [242, 245, 224, 249],
239: [223, 249, 225, 238],
240: [248, 245, 242, 249],
241: [251, 235, 253, 243],
242: [245, 240, 238, 233],
243: [251, 235, 254, 241],
244: [248, 240, 242, 233],
245: [242, 249, 240, 238],
246: [275, 263, 290, 267],
247: [255, 234, 229, 195],
248: [240, 244, 242, 245],
249: [245, 240, 238, 242],
250: [239, 249, 268, 245],
251: [241, 235, 243, 252],
252: [271, 253, 241, 251],
253: [252, 241, 271, 251],
254: [261, 243, 282, 264],
255: [247, 234, 229, 279],
256: [277, 262, 231, 209],
257: [244, 258, 248, 240],
258: [268, 249, 240, 248],
259: [257, 293, 300, 237],
260: [230, 266, 276, 286],
261: [232, 254, 264, 274],
262: [287, 256, 219, 304],
263: [275, 246, 236, 290],
264: [274, 261, 284, 232],
265: [285, 236, 278, 213],
266: [286, 268, 273, 276],
267: [290, 279, 246, 312],
268: [258, 250, 273, 266],
269: [330, 176, 183, 197],
270: [296, 282, 299, 271],
271: [252, 296, 270, 309],
272: [273, 288, 300, 257],
273: [268, 266, 258, 272],
274: [264, 278, 284, 291],
275: [263, 246, 236, 285],
276: [286, 295, 292, 288],
277: [294, 289, 256, 287],
278: [274, 291, 284, 264],
279: [267, 255, 234, 247],
280: [283, 200, 237, 281],
281: [271, 307, 253, 252],
282: [299, 270, 284, 297],
283: [280, 293, 325, 281],
284: [297, 274, 282, 264],
285: [265, 298, 275, 236],
286: [276, 266, 288, 295],
287: [294, 303, 277, 304],
288: [295, 286, 276, 302],
289: [294, 292, 315, 277],
290: [312, 246, 267, 275],
291: [278, 274, 308, 284],
292: [295, 276, 311, 289],
293: [300, 305, 259, 283],
294: [289, 277, 287, 303],
295: [292, 276, 288, 286],
296: [309, 271, 270, 313],
297: [299, 284, 282, 291],
298: [285, 310, 265, 332],
299: [297, 282, 314, 270],
300: [293, 305, 316, 272],
301: [304, 322, 303, 348],
302: [321, 288, 295, 311],
303: [304, 287, 315, 294],
304: [303, 301, 287, 315],
305: [316, 300, 337, 293],
306: [316, 331, 345, 337],
307: [320, 309, 281, 339],
308: [291, 319, 297, 323],
309: [296, 313, 271, 307],
310: [312, 327, 332, 298],
311: [292, 317, 295, 321],
312: [290, 310, 267, 327],
313: [309, 296, 318, 314],
314: [319, 329, 299, 318],
315: [317, 303, 324, 289],
316: [337, 305, 306, 331],
317: [324, 315, 311, 328],
318: [329, 340, 335, 313],
319: [314, 329, 338, 340],
320: [335, 339, 307, 343],
321: [333, 302, 311, 328],
322: [342, 315, 324, 317],
323: [349, 361, 332, 308],
324: [317, 328, 315, 342],
325: [334, 339, 362, 357],
326: [337, 344, 316, 305],
327: [332, 310, 349, 312],
328: [347, 324, 333, 346],
329: [319, 314, 340, 318],
330: [269, 279, 255, 229],
331: [337, 341, 316, 345],
332: [327, 349, 310, 323],
333: [321, 346, 328, 347],
334: [357, 325, 355, 344],
335: [320, 318, 343, 339],
336: [338, 350, 361, 381],
337: [331, 316, 326, 341],
338: [340, 350, 329, 319],
339: [320, 343, 335, 325],
340: [338, 350, 329, 318],
341: [331, 344, 337, 363],
342: [354, 322, 356, 324],
343: [364, 360, 335, 339],
344: [363, 341, 326, 371],
345: [346, 333, 331, 306],
346: [345, 347, 333, 352],
347: [328, 346, 352, 333],
348: [373, 353, 415, 416],
349: [366, 332, 323, 361],
350: [340, 338, 358, 329],
351: [397, 365, 352, 376],
352: [347, 346, 359, 380],
353: [372, 354, 373, 348],
354: [356, 342, 353, 359],
355: [357, 402, 392, 371],
356: [359, 354, 342, 378],
357: [377, 355, 392, 375],
358: [381, 350, 390, 385],
359: [356, 379, 393, 378],
360: [364, 368, 374, 362],
361: [384, 366, 395, 349],
362: [370, 368, 367, 360],
363: [371, 344, 376, 341],
364: [360, 368, 362, 374],
365: [376, 409, 405, 351],
366: [349, 395, 361, 384],
367: [375, 370, 362, 374],
368: [374, 360, 370, 364],
369: [386, 385, 374, 396],
370: [367, 362, 368, 375],
371: [363, 387, 376, 355],
372: [378, 353, 393, 354],
373: [415, 416, 423, 348],
374: [368, 370, 360, 367],
375: [367, 370, 383, 377],
376: [365, 371, 405, 363],
377: [383, 392, 375, 400],
378: [393, 372, 379, 359],
379: [393, 378, 359, 380],
380: [379, 431, 445, 406],
381: [358, 399, 390, 350],
382: [402, 387, 410, 432],
383: [400, 377, 375, 398],
384: [395, 361, 414, 366],
385: [386, 396, 369, 411],
386: [385, 396, 369, 411],
387: [410, 371, 382, 391],
388: [437, 482, 414, 399],
389: [396, 394, 426, 444],
390: [411, 396, 426, 428],
391: [405, 427, 410, 409],
392: [403, 377, 383, 417],
393: [378, 379, 359, 372],
394: [398, 374, 404, 418],
395: [384, 414, 366, 458],
396: [411, 386, 385, 426],
397: [406, 421, 409, 351],
398: [404, 400, 394, 418],
399: [462, 438, 381, 390],
400: [404, 383, 398, 419],
401: [413, 423, 415, 472],
402: [403, 382, 417, 392],
403: [417, 392, 402, 432],
404: [400, 418, 398, 419],
405: [391, 427, 409, 410],
406: [397, 448, 421, 412],
407: [413, 467, 408, 481],
408: [407, 429, 460, 393],
409: [427, 421, 405, 436],
410: [391, 387, 405, 443],
411: [426, 396, 428, 390],
412: [448, 406, 445, 506],
413: [407, 401, 467, 472],
414: [458, 420, 437, 384],
415: [416, 423, 373, 435],
416: [415, 423, 435, 373],
417: [403, 432, 425, 419],
418: [404, 419, 439, 398],
419: [418, 404, 439, 425],
420: [458, 414, 498, 437],
421: [409, 436, 406, 448],
422: [418, 457, 439, 449],
423: [415, 416, 435, 401],
424: [453, 452, 442, 441],
425: [432, 417, 419, 456],
426: [411, 428, 444, 396],
427: [405, 409, 391, 436],
428: [426, 466, 446, 411],
429: [468, 431, 445, 460],
430: [433, 451, 434, 476],
431: [445, 468, 429, 380],
432: [425, 417, 456, 403],
433: [451, 430, 476, 447],
434: [514, 430, 532, 451],
435: [459, 423, 416, 415],
436: [427, 409, 469, 421],
437: [414, 388, 458, 482],
438: [446, 462, 471, 477],
439: [450, 418, 419, 457],
440: [442, 441, 452, 434],
441: [440, 442, 452, 434],
442: [440, 441, 452, 434],
443: [463, 410, 382, 488],
444: [455, 466, 426, 428],
445: [431, 468, 429, 412],
446: [477, 438, 466, 428],
447: [465, 473, 485, 433],
448: [412, 406, 421, 469],
449: [455, 483, 499, 457],
450: [439, 425, 419, 456],
451: [433, 476, 430, 495],
452: [424, 441, 440, 442],
453: [424, 452, 442, 441],
454: [457, 450, 504, 456],
455: [444, 483, 449, 466],
456: [425, 450, 432, 454],
457: [454, 439, 422, 450],
458: [420, 414, 437, 498],
459: [435, 523, 524, 549],
460: [503, 540, 481, 516],
461: [488, 456, 479, 432],
462: [438, 471, 493, 399],
463: [443, 436, 427, 391],
464: [493, 462, 600, 536],
465: [447, 473, 485, 512],
466: [428, 474, 444, 446],
467: [472, 517, 481, 516],
468: [445, 500, 431, 429],
469: [492, 436, 519, 421],
470: [475, 501, 478, 485],
471: [493, 477, 543, 446],
472: [497, 467, 517, 550],
473: [465, 496, 447, 485],
474: [466, 507, 477, 444],
475: [478, 470, 501, 491],
476: [451, 495, 496, 473],
477: [446, 507, 474, 471],
478: [491, 475, 480, 484],
479: [504, 461, 631, 488],
480: [484, 478, 491, 475],
481: [516, 503, 527, 517],
482: [563, 498, 536, 437],
483: [455, 494, 444, 449],
484: [480, 491, 490, 487],
485: [512, 533, 520, 470],
486: [488, 538, 463, 605],
487: [508, 515, 505, 484],
488: [486, 461, 479, 443],
489: [508, 487, 526, 537],
490: [491, 535, 505, 484],
491: [490, 478, 484, 480],
492: [469, 519, 436, 528],
493: [471, 543, 462, 464],
494: [483, 554, 530, 575],
495: [476, 496, 514, 562],
496: [566, 559, 473, 539],
497: [472, 509, 578, 517],
498: [563, 420, 482, 458],
499: [513, 553, 449, 457],
500: [546, 502, 468, 506],
501: [518, 529, 520, 475],
502: [500, 521, 546, 468],
503: [540, 516, 547, 481],
504: [454, 586, 479, 513],
505: [515, 541, 535, 490],
506: [557, 500, 546, 588],
507: [477, 474, 542, 543],
508: [537, 515, 487, 541],
509: [511, 590, 578, 621],
510: [567, 526, 585, 583],
511: [568, 590, 525, 509],
512: [533, 485, 520, 539],
513: [553, 499, 594, 611],
514: [532, 495, 476, 562],
515: [505, 541, 508, 537],
516: [481, 527, 503, 547],
517: [527, 516, 481, 560],
518: [529, 501, 545, 544],
519: [528, 492, 647, 538],
520: [529, 544, 501, 548],
521: [573, 502, 561, 546],
522: [570, 537, 526, 565],
523: [569, 549, 524, 584],
524: [549, 525, 569, 584],
525: [592, 568, 524, 549],
526: [522, 510, 489, 576],
527: [516, 517, 547, 560],
528: [557, 639, 519, 647],
529: [520, 544, 518, 501],
530: [553, 594, 554, 494],
531: [564, 532, 556, 514],
532: [514, 564, 495, 562],
533: [512, 485, 520, 539],
534: [569, 584, 523, 549],
535: [551, 552, 490, 505],
536: [606, 600, 655, 563],
537: [541, 508, 515, 505],
538: [605, 519, 486, 492],
539: [566, 579, 533, 559],
540: [547, 503, 561, 558],
541: [515, 537, 505, 565],
542: [543, 613, 607, 507],
543: [542, 493, 471, 507],
544: [529, 545, 518, 520],
545: [544, 552, 518, 572],
546: [500, 588, 599, 502],
547: [540, 558, 503, 516],
548: [579, 544, 520, 595],
549: [524, 569, 525, 584],
550: [560, 581, 597, 517],
551: [565, 535, 541, 571],
552: [545, 571, 535, 551],
553: [513, 530, 594, 499],
554: [575, 494, 530, 609],
555: [567, 585, 624, 653],
556: [604, 603, 531, 602],
557: [588, 506, 639, 528],
558: [547, 587, 560, 540],
559: [566, 574, 562, 496],
560: [558, 587, 550, 527],
561: [540, 610, 558, 547],
562: [574, 615, 559, 629],
563: [482, 589, 606, 498],
564: [630, 615, 532, 562],
565: [570, 551, 541, 537],
566: [559, 539, 574, 496],
567: [585, 510, 583, 555],
568: [525, 511, 524, 592],
569: [584, 549, 524, 525],
570: [565, 522, 582, 596],
571: [552, 593, 577, 551],
572: [591, 593, 614, 545],
573: [521, 610, 651, 561],
574: [559, 629, 562, 566],
575: [554, 609, 530, 494],
576: [618, 583, 522, 526],
577: [582, 571, 619, 593],
578: [620, 597, 598, 621],
579: [595, 548, 539, 622],
580: [715, 660, 613, 649],
581: [597, 640, 550, 626],
582: [577, 596, 570, 565],
583: [618, 585, 576, 567],
584: [569, 592, 525, 549],
585: [567, 583, 624, 510],
586: [611, 668, 670, 504],
587: [601, 558, 560, 610],
588: [635, 557, 546, 599],
589: [563, 606, 690, 689],
590: [511, 568, 625, 509],
591: [572, 614, 616, 593],
592: [623, 525, 584, 568],
593: [614, 571, 572, 591],
594: [633, 530, 553, 632],
595: [579, 591, 622, 548],
596: [582, 627, 570, 638],
597: [620, 581, 578, 640],
598: [620, 626, 621, 578],
599: [665, 588, 635, 546],
600: [643, 655, 536, 693],
601: [587, 560, 645, 558],
602: [603, 604, 556, 452],
603: [602, 604, 556, 452],
604: [556, 603, 602, 531],
605: [538, 646, 743, 486],
606: [655, 536, 563, 589],
607: [609, 613, 660, 542],
608: [642, 622, 729, 680],
609: [607, 575, 632, 671],
610: [637, 561, 587, 651],
611: [586, 633, 664, 668],
612: [663, 685, 712, 669],
613: [660, 607, 542, 543],
614: [593, 617, 591, 616],
615: [629, 636, 562, 574],
616: [614, 591, 617, 593],
617: [614, 619, 656, 616],
618: [657, 583, 576, 666],
619: [617, 577, 627, 593],
620: [598, 578, 626, 597],
621: [598, 620, 652, 578],
622: [595, 616, 680, 579],
623: [592, 625, 584, 525],
624: [653, 585, 657, 583],
625: [623, 592, 590, 568],
626: [640, 598, 620, 597],
627: [619, 596, 582, 679],
628: [653, 762, 624, 666],
629: [615, 636, 574, 642],
630: [654, 564, 636, 615],
631: [681, 670, 669, 685],
632: [671, 594, 633, 609],
633: [594, 664, 611, 632],
634: [623, 625, 728, 727],
635: [588, 678, 639, 599],
636: [629, 654, 615, 642],
637: [610, 651, 645, 601],
638: [672, 596, 627, 618],
639: [659, 557, 635, 678],
640: [626, 597, 581, 620],
641: [652, 709, 625, 590],
642: [629, 636, 608, 695],
643: [600, 693, 713, 649],
644: [648, 694, 645, 717],
645: [637, 644, 601, 648],
646: [663, 605, 740, 612],
647: [667, 659, 528, 519],
648: [644, 674, 696, 640],
649: [692, 643, 718, 713],
650: [733, 714, 634, 728],
651: [662, 637, 610, 573],
652: [661, 621, 598, 688],
653: [624, 628, 657, 555],
654: [636, 630, 615, 695],
655: [606, 600, 693, 643],
656: [684, 617, 673, 676],
657: [618, 666, 583, 624],
658: [662, 665, 705, 704],
659: [639, 647, 667, 678],
660: [613, 607, 697, 580],
661: [688, 652, 674, 626],
662: [651, 658, 721, 682],
663: [646, 712, 612, 740],
664: [633, 611, 594, 687],
665: [599, 658, 683, 704],
666: [657, 677, 618, 638],
667: [647, 659, 716, 702],
668: [670, 611, 722, 723],
669: [681, 685, 742, 631],
670: [681, 668, 631, 669],
671: [675, 632, 732, 609],
672: [638, 679, 677, 698],
673: [684, 656, 699, 680],
674: [696, 688, 661, 626],
675: [671, 759, 771, 770],
676: [679, 684, 703, 701],
677: [672, 666, 735, 698],
678: [635, 710, 659, 639],
679: [676, 703, 672, 698],
680: [673, 699, 724, 622],
681: [669, 670, 631, 685],
682: [717, 734, 694, 662],
683: [665, 754, 775, 705],
684: [673, 656, 676, 699],
685: [669, 712, 742, 681],
686: [737, 655, 606, 707],
687: [732, 664, 784, 777],
688: [700, 661, 674, 725],
689: [690, 707, 589, 686],
690: [689, 707, 589, 686],
691: [630, 654, 695, 752],
692: [718, 649, 726, 713],
693: [713, 706, 643, 655],
694: [717, 644, 719, 734],
695: [642, 654, 636, 608],
696: [674, 720, 719, 648],
697: [744, 759, 715, 783],
698: [703, 679, 672, 735],
699: [684, 673, 701, 739],
700: [688, 709, 741, 725],
701: [703, 676, 739, 684],
702: [716, 710, 793, 667],
703: [701, 679, 676, 698],
704: [705, 721, 786, 658],
705: [704, 721, 786, 658],
706: [763, 693, 713, 726],
707: [690, 689, 737, 686],
708: [768, 731, 739, 724],
709: [700, 741, 711, 750],
710: [702, 678, 779, 754],
711: [709, 727, 750, 765],
712: [663, 685, 773, 740],
713: [726, 693, 692, 643],
714: [785, 728, 780, 802],
715: [744, 749, 697, 760],
716: [702, 767, 792, 667],
717: [694, 734, 682, 644],
718: [692, 745, 726, 749],
719: [720, 696, 751, 694],
720: [719, 725, 696, 751],
721: [662, 704, 705, 747],
722: [723, 668, 753, 789],
723: [722, 668, 753, 789],
724: [738, 680, 729, 699],
725: [720, 741, 688, 700],
726: [718, 713, 692, 745],
727: [728, 765, 711, 780],
728: [727, 714, 780, 634],
729: [738, 724, 730, 680],
730: [729, 738, 768, 724],
731: [739, 698, 735, 703],
732: [748, 687, 671, 784],
733: [785, 714, 650, 758],
734: [717, 682, 694, 755],
735: [698, 677, 731, 672],
736: [746, 796, 794, 740],
737: [686, 797, 707, 813],
738: [724, 729, 730, 680],
739: [701, 703, 699, 731],
740: [794, 736, 756, 712],
741: [761, 700, 725, 709],
742: [669, 685, 773, 753],
743: [774, 746, 767, 796],
744: [715, 760, 749, 697],
745: [749, 718, 726, 692],
746: [796, 736, 743, 774],
747: [764, 806, 721, 734],
748: [770, 771, 801, 732],
749: [745, 760, 744, 715],
750: [761, 781, 766, 741],
751: [720, 778, 719, 757],
752: [768, 730, 708, 738],
753: [803, 742, 723, 722],
754: [779, 683, 775, 710],
755: [734, 778, 806, 751],
756: [773, 838, 794, 740],
757: [782, 778, 751, 825],
758: [791, 785, 802, 833],
759: [783, 770, 771, 795],
760: [744, 749, 817, 811],
761: [741, 750, 782, 757],
762: [800, 628, 735, 653],
763: [706, 813, 826, 872],
764: [747, 786, 840, 834],
765: [799, 727, 766, 780],
766: [819, 781, 818, 750],
767: [804, 774, 792, 716],
768: [708, 730, 738, 724],
769: [790, 726, 745, 718],
770: [771, 795, 759, 783],
771: [770, 795, 759, 783],
772: [708, 841, 731, 768],
773: [756, 712, 742, 788],
774: [767, 815, 743, 796],
775: [812, 754, 683, 786],
776: [791, 848, 758, 895],
777: [829, 789, 784, 823],
778: [751, 757, 824, 755],
779: [754, 798, 793, 710],
780: [816, 802, 799, 765],
781: [827, 766, 750, 819],
782: [757, 761, 825, 781],
783: [759, 795, 787, 770],
784: [823, 807, 777, 687],
785: [802, 714, 758, 733],
786: [814, 764, 705, 704],
787: [783, 837, 795, 817],
788: [862, 773, 844, 902],
789: [803, 777, 829, 857],
790: [808, 769, 811, 822],
791: [776, 758, 848, 733],
792: [804, 805, 767, 716],
793: [805, 798, 779, 792],
794: [740, 756, 810, 736],
795: [771, 770, 783, 801],
796: [815, 746, 736, 828],
797: [737, 892, 813, 707],
798: [779, 793, 853, 883],
799: [765, 820, 818, 830],
800: [762, 841, 628, 735],
801: [821, 795, 771, 770],
802: [785, 833, 816, 780],
803: [857, 844, 789, 753],
804: [792, 767, 835, 843],
805: [792, 793, 874, 881],
806: [832, 831, 747, 871],
807: [836, 784, 801, 823],
808: [790, 811, 817, 879],
809: [892, 707, 797, 690],
810: [794, 882, 828, 838],
811: [817, 808, 790, 847],
812: [867, 775, 883, 854],
813: [872, 763, 826, 894],
814: [786, 854, 834, 885],
815: [796, 828, 774, 846],
816: [855, 878, 830, 870],
817: [811, 787, 847, 760],
818: [819, 820, 799, 766],
819: [818, 766, 842, 781],
820: [818, 830, 884, 799],
821: [801, 839, 795, 837],
822: [877, 939, 790, 925],
823: [849, 784, 829, 889],
824: [868, 845, 778, 891],
825: [851, 850, 782, 827],
826: [877, 822, 763, 872],
827: [860, 842, 781, 858],
828: [815, 796, 846, 924],
829: [863, 889, 849, 777],
830: [865, 855, 820, 870],
831: [876, 806, 832, 868],
832: [871, 806, 840, 831],
833: [864, 875, 873, 915],
834: [840, 861, 890, 814],
835: [846, 804, 815, 908],
836: [937, 807, 849, 823],
837: [787, 847, 923, 821],
838: [866, 756, 794, 810],
839: [912, 821, 935, 923],
840: [834, 861, 871, 832],
841: [800, 762, 963, 772],
842: [858, 827, 860, 819],
843: [874, 984, 881, 804],
844: [862, 898, 857, 803],
845: [891, 852, 904, 851],
846: [924, 835, 828, 979],
847: [945, 837, 879, 817],
848: [869, 776, 931, 907],
849: [889, 823, 922, 829],
850: [851, 860, 825, 852],
851: [825, 850, 852, 845],
852: [845, 850, 851, 896],
853: [881, 798, 976, 998],
854: [885, 814, 867, 890],
855: [870, 878, 816, 830],
856: [914, 857, 863, 899],
857: [856, 899, 844, 803],
858: [842, 859, 884, 880],
859: [884, 858, 932, 946],
860: [827, 850, 842, 880],
861: [840, 871, 934, 834],
862: [898, 844, 917, 909],
863: [829, 889, 856, 914],
864: [875, 833, 903, 878],
865: [870, 920, 830, 855],
866: [838, 887, 902, 756],
867: [883, 812, 888, 854],
868: [919, 876, 904, 891],
869: [907, 980, 897, 848],
870: [878, 855, 865, 913],
871: [832, 861, 910, 840],
872: [813, 894, 826, 763],
873: [928, 915, 921, 833],
874: [881, 843, 805, 984],
875: [864, 878, 903, 833],
876: [831, 926, 868, 919],
877: [939, 940, 822, 826],
878: [870, 875, 855, 905],
879: [925, 945, 847, 985],
880: [860, 946, 858, 842],
881: [874, 853, 976, 843],
882: [927, 943, 1002, 810],
883: [888, 867, 812, 798],
884: [859, 886, 858, 932],
885: [854, 890, 933, 950],
886: [901, 932, 884, 920],
887: [866, 1000, 902, 1036],
888: [883, 971, 867, 930],
889: [849, 918, 863, 922],
890: [949, 934, 885, 861],
891: [904, 845, 948, 868],
892: [797, 809, 989, 1106],
893: [921, 895, 931, 988],
894: [872, 940, 877, 813],
895: [931, 893, 921, 873],
896: [960, 852, 850, 880],
897: [980, 1019, 1018, 869],
898: [909, 862, 844, 917],
899: [965, 856, 857, 914],
900: [905, 913, 947, 955],
901: [920, 886, 954, 865],
902: [967, 917, 866, 887],
903: [911, 905, 944, 864],
904: [891, 942, 948, 919],
905: [944, 900, 903, 955],
906: [929, 955, 968, 944],
907: [1027, 1018, 869, 980],
908: [1024, 846, 984, 835],
909: [898, 972, 899, 862],
910: [936, 871, 934, 926],
911: [903, 915, 916, 928],
912: [923, 839, 983, 935],
913: [920, 900, 952, 947],
914: [964, 918, 856, 863],
915: [928, 911, 921, 903],
916: [906, 944, 929, 968],
917: [898, 967, 862, 902],
918: [889, 914, 964, 863],
919: [942, 868, 904, 982],
920: [913, 901, 954, 952],
921: [928, 915, 873, 938],
922: [889, 978, 849, 918],
923: [912, 956, 983, 837],
924: [846, 979, 927, 828],
925: [939, 879, 970, 822],
926: [982, 876, 981, 910],
927: [882, 943, 979, 973],
928: [915, 921, 911, 873],
929: [968, 906, 916, 993],
930: [950, 1009, 1051, 867],
931: [895, 959, 893, 848],
932: [886, 859, 951, 957],
933: [885, 950, 949, 890],
934: [949, 936, 961, 890],
935: [975, 953, 912, 839],
936: [934, 910, 949, 961],
937: [953, 978, 836, 935],
938: [916, 911, 928, 915],
939: [1014, 925, 877, 822],
940: [877, 894, 1014, 1050],
941: [960, 948, 1035, 1046],
942: [919, 948, 904, 990],
943: [1002, 927, 882, 973],
944: [906, 905, 916, 955],
945: [985, 847, 956, 879],
946: [880, 859, 957, 958],
947: [986, 955, 952, 968],
948: [942, 904, 990, 891],
949: [961, 934, 936, 890],
950: [930, 933, 885, 1003],
951: [954, 999, 974, 901],
952: [962, 947, 913, 986],
953: [937, 935, 975, 1015],
954: [974, 962, 920, 952],
955: [968, 906, 947, 944],
956: [945, 1034, 985, 923],
957: [932, 951, 999, 946],
958: [960, 896, 946, 880],
959: [931, 1031, 1075, 1027],
960: [896, 941, 958, 852],
961: [949, 934, 987, 936],
962: [952, 974, 954, 991],
963: [841, 1236, 800, 772],
964: [914, 918, 969, 1021],
965: [1017, 899, 1020, 964],
966: [1042, 1048, 1005, 1001],
967: [1022, 902, 917, 1033],
968: [929, 955, 906, 944],
969: [964, 918, 996, 1021],
970: [985, 925, 1037, 1010],
971: [888, 1049, 998, 1009],
972: [1025, 909, 898, 917],
973: [979, 1026, 1029, 927],
974: [991, 962, 954, 952],
975: [935, 983, 1015, 953],
976: [998, 1064, 881, 1071],
977: [981, 1044, 1012, 994],
978: [996, 922, 937, 969],
979: [973, 924, 927, 1029],
980: [897, 1018, 1019, 907],
981: [982, 977, 1044, 1013],
982: [981, 1013, 926, 919],
983: [975, 912, 923, 1015],
984: [1007, 843, 908, 874],
985: [945, 1037, 970, 956],
986: [947, 992, 968, 952],
987: [961, 994, 1012, 949],
988: [1001, 997, 1042, 1048],
989: [1103, 1106, 894, 1040],
990: [948, 1046, 1061, 1013],
991: [974, 962, 992, 1004],
992: [991, 995, 986, 1004],
993: [929, 968, 995, 906],
994: [1012, 987, 961, 977],
995: [992, 993, 986, 968],
996: [978, 969, 922, 937],
997: [988, 1042, 1048, 1001],
998: [1071, 971, 976, 1049],
999: [1004, 951, 974, 991],
...}
# the matrix of neighboorhood: 

pd.DataFrame(*w_knn.full()).astype(int# 1 means both are neighbors
#cuenta de ceros de cuantos no vecinos hay
w_knn.nonzero
9988
# pct of neighboorhood (density)
w_knn.pct_nonzero
0.16019223067681218
# Hay algun municipio sin vecino?
w_queen.islands
[453, 602]
#Ejercicio 6
#Calcule el coeficiente de Moran para todas sus variables numéricas.

#Haz un diagrama de dispersión para cada variable.
#Spatial correlation
#We need the neighboorhood matrix (the weight matrix) to compute spatial correlation: if the variable value is correlated with the values of its neighbors - which proves a spatial effect.

# needed for spatial correlation. La suma por fila debe ser 1=R
w_knn.transform = 'R'
from esda.moran import Moran #sI EL VALOR DE UN DISTRITO ESTA CORRELACIONADO CON SU DISTRITO VECINO

moranICED = Moran(MunicipiosMex['IC_Reza_Educ'], w_knn)
moranICED.I,moranICED.p_sim
(0.6562668847866715, 0.001)
# Grafico de la correlcion con el ICED general con el ICED de los vecinos
from splot.esda import moran_scatterplot

fig, ax = moran_scatterplot(moranICED, aspect_equal=True)
ax.set_xlabel('ICED_std')
ax.set_ylabel('SpatialLag_ICED_std')
plt.show()
from esda.moran import Moran #sI EL VALOR DE UN DISTRITO ESTA CORRELACIONADO CON SU DISTRITO VECINO

moranSALUD = Moran(MunicipiosMex['IC_Care_en_Acce_Servi_Salud'], w_knn)
moranSALUD.I,moranSALUD.p_sim
(0.45205146403640994, 0.001)
# Grafico de la correlcion con el ICSalud general con el ICSalud de los vecinos
from splot.esda import moran_scatterplot

fig, ax = moran_scatterplot(moranSALUD, aspect_equal=True)
ax.set_xlabel('SALUD_std')
ax.set_ylabel('SpatialLag_SALUD_std')
plt.show()
from esda.moran import Moran #sI EL VALOR DE UN DISTRITO ESTA CORRELACIONADO CON SU DISTRITO VECINO

moranAli = Moran(MunicipiosMex['IC_Care_en_Ali'], w_knn)
moranAli.I,moranAli.p_sim
(0.5596522016282851, 0.001)
# Grafico de la correlcion con el ICSalud general con el ICSalud de los vecinos
from splot.esda import moran_scatterplot

fig, ax = moran_scatterplot(moranAli, aspect_equal=True)
ax.set_xlabel('Ali_std')
ax.set_ylabel('SpatialLag_Ali_std')
plt.show()
#Ejercicio 7
#Calcule el Moran local para las variables de sus datos que tienen una correlación espacial significativa.
#Cree una nueva columna para cada una de esas variables, con una etiqueta ('0 no_sig', '1 hotSpot', '2 coldOutlier', '3 coldSpot', '4 hotOutlier').
#Prepare un mapa para cada una de las variables analizadas, mostrando los puntos y los valores atípicos.
#Correlación espacial local
#Podemos calcular un LISA (Moran local) para cada caso. Eso nos ayudará a encontrar grupos espaciales (spots) y valores atípicos espaciales:
#Un hotSpot es un polígono cuyo valor en la variable es alto Y está rodeado de polígonos con valores también altos.
#Un ColdSpot es un polígono cuyo valor en la variable es bajo Y está rodeado de polígonos con valores también bajos.
#Un coldOutlier es un polígono cuyo valor en la variable es bajo PERO está rodeado de polígonos con valores altos.
#Un hotOutlier es un polígono cuyo valor en la variable es alto PERO está rodeado de polígonos con valores bajos.
#También es posible que no se detecte una correlación significativa. Veamos esos valores:
# El diagrama de dispersión con información local
from esda.moran import Moran_Local

# calculate Moran_Local and plot
lisaICED = Moran_Local(y=MunicipiosMex['IC_Reza_Educ'], w=w_knn,seed=2022)
fig, ax = moran_scatterplot(lisaICED,p=0.05)
ax.set_xlabel('ICED_std')
ax.set_ylabel('SpatialLag_ICED_std')
plt.show()
# el mapa con los puntos y los valores atípicos

from splot.esda import lisa_cluster
f, ax = plt.subplots(1figsize=(1212))
plt.title('Spots and Outliers')
fig = lisa_cluster(lisaICED, 
                   MunicipiosMex,ax=ax,
                   legend_kwds={'loc''center left'
                                'bbox_to_anchor': (0.70.6)})
plt.show()
# significance, la significancia de cada municipio
lisaICED.p_sim
# quadrant: 1 HH,  2 LH,  3 LL,  4 HL
pd.Series(lisaICED.q).value_counts()
#Esta data la metemos al dataFrame
MunicipiosMex['ICED_quadrant']=[l if p <0.05 else 0 for l,p in zip(lisaICED.q,lisaICED.p_sim)  ]
MunicipiosMex['ICED_quadrant'].value_counts()
#Graficamos
labels = [ '0 no_sig''1 hotSpot''2 coldOutlier''3 coldSpot''4 hotOutlier']

MunicipiosMex['ICED_quadrant_names']=[labels[i] for i in MunicipiosMex['ICED_quadrant']]

MunicipiosMex['ICED_quadrant_names'].value_counts()
from matplotlib import colors
myColMap = colors.ListedColormap([ 'ghostwhite''red''green''black','orange'])



# Set up figure and ax
f, ax = plt.subplots(1figsize=(12,12))
# Plot unique values choropleth including
# a legend and with no boundary lines

plt.title('Spots and Outliers')

MunicipiosMex.plot(column='ICED_quadrant_names'
                categorical=True,
                cmap=myColMap,
                linewidth=0.1
                edgecolor='white',
                legend=True,
                legend_kwds={'loc''center left'
                             'bbox_to_anchor': (0.70.6)},
                ax=ax)
# Remove axis
ax.set_axis_off()
# Display the map
plt.show()
# The scatterplot with local info
from esda.moran import Moran_Local

# calculate Moran_Local and plot
lisaSALUD = Moran_Local(y=MunicipiosMex['IC_Care_en_Acce_Servi_Salud'], w=w_knn,seed=2022)
fig, ax = moran_scatterplot(lisaSALUD,p=0.05)
ax.set_xlabel('SALUD_std')
ax.set_ylabel('SpatialLag_SALUD_std')
plt.show()
# the map with the spots and outliers

from splot.esda import lisa_cluster
f, ax = plt.subplots(1figsize=(1212))
plt.title('Spots and Outliers')
fig = lisa_cluster(lisaSALUD, 
                   MunicipiosMex,ax=ax,
                   legend_kwds={'loc''center left'
                                'bbox_to_anchor': (0.70.6)})
plt.show()
# significance, la significancia de cada municipio
lisaSALUD.p_sim
# quadrant: 1 HH,  2 LH,  3 LL,  4 HL
pd.Series(lisaSALUD.q).value_counts()
#Esta data la metemos al dataFrame
MunicipiosMex['ISALUD_quadrant']=[l if p <0.05 else 0 for l,p in zip(lisaSALUD.q,lisaSALUD.p_sim)  ]
MunicipiosMex['ISALUD_quadrant'].value_counts()
#Graficamos
labels = [ '0 no_sig''1 hotSpot''2 coldOutlier''3 coldSpot''4 hotOutlier']

MunicipiosMex['ISALUD_quadrant_names']=[labels[i] for i in MunicipiosMex['ISALUD_quadrant']]

MunicipiosMex['ISALUD_quadrant_names'].value_counts()
from matplotlib import colors
myColMap = colors.ListedColormap([ 'ghostwhite''red''green''black','orange'])



# Set up figure and ax
f, ax = plt.subplots(1figsize=(12,12))
# Plot unique values choropleth including
# a legend and with no boundary lines

plt.title('Spots and Outliers')

MunicipiosMex.plot(column='ISALUD_quadrant_names'
                categorical=True,
                cmap=myColMap,
                linewidth=0.1
                edgecolor='white',
                legend=True,
                legend_kwds={'loc''center left'
                             'bbox_to_anchor': (0.70.6)},
                ax=ax)
# Remove axis
ax.set_axis_off()
# Display the map
plt.show()
# The scatterplot with local info
from esda.moran import Moran_Local

# calculate Moran_Local and plot
lisaAli = Moran_Local(y=MunicipiosMex['IC_Care_en_Ali'], w=w_knn,seed=2022)
fig, ax = moran_scatterplot(lisaSALUD,p=0.05)
ax.set_xlabel('Ali_std')
ax.set_ylabel('SpatialLag_Ali_std')
plt.show()
# significance, la significancia de cada municipio
lisaAli.p_sim
# quadrant: 1 HH,  2 LH,  3 LL,  4 HL
pd.Series(lisaAli.q).value_counts()
#Esta data la metemos al dataFrame
MunicipiosMex['Ali_quadrant']=[l if p <0.05 else 0 for l,p in zip(lisaAli.q,lisaAli.p_sim)  ]
MunicipiosMex['Ali_quadrant'].value_counts()
#Graficamos
labels = [ '0 no_sig''1 hotSpot''2 coldOutlier''3 coldSpot''4 hotOutlier']

MunicipiosMex['Ali_quadrant_names']=[labels[i] for i in MunicipiosMex['Ali_quadrant']]

MunicipiosMex['Ali_quadrant_names'].value_counts()
from matplotlib import colors
myColMap = colors.ListedColormap([ 'ghostwhite''red''green''black','orange'])



# Set up figure and ax
f, ax = plt.subplots(1figsize=(12,12))
# Plot unique values choropleth including
# a legend and with no boundary lines

plt.title('Spots and Outliers')

MunicipiosMex.plot(column='Ali_quadrant_names'
                categorical=True,
                cmap=myColMap,
                linewidth=0.1
                edgecolor='white',
                legend=True,
                legend_kwds={'loc''center left'
                             'bbox_to_anchor': (0.70.6)},
                ax=ax)
# Remove axis
ax.set_axis_off()
# Display the map
plt.show()
Created using Figma